1400
Is it possible to define my values for sorting
with G2antt1 do
begin
	(IUnknown(Columns.Add('C1')) as EXG2ANTTLib_TLB.Column).SortType := EXG2ANTTLib_TLB.SortUserDataString;
	Columns.Add('C2');
	with Items do
	begin
		h := AddItem('Cell 1');
		CellData[OleVariant(h),OleVariant(0)] := '3.your extra data';
		CellValue[OleVariant(h),OleVariant(1)] := 'SortValue=3';
		h := AddItem('Cell 1.1');
		CellData[OleVariant(h),OleVariant(0)] := '1.your extra data';
		CellValue[OleVariant(h),OleVariant(1)] := ' SortValue=1';
		h := AddItem('Cell 1.2');
		CellData[OleVariant(h),OleVariant(0)] := '5.your extra data';
		CellValue[OleVariant(h),OleVariant(1)] := ' SortValue=5';
		h := AddItem('Cell 1.3');
		CellData[OleVariant(h),OleVariant(0)] := '2.your extra data';
		CellValue[OleVariant(h),OleVariant(1)] := ' SortValue=2';
	end;
end
1399
I have multiple dropdown lists, that are depending on each other, that means that the values in dropdown list no. 2 is based on the users selection in dropdown list no 1. How can I do this
// EditOpen event - Occurs when the edit operation starts.
procedure TForm1.G2antt1EditOpen(ASender: TObject; );
begin
	with G2antt1 do
	begin
		with Items do
		begin
			v := CellValue[OleVariant(FocusItem),OleVariant(0)];
			c := CellCaption[OleVariant(FocusItem),OleVariant(0)];
		end;
		with Columns.Item[OleVariant(1)].Editor do
		begin
			ClearItems();
			AddItem(v,c,Null);
		end;
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	with (IUnknown(Columns.Add('DropDownList')) as EXG2ANTTLib_TLB.Column) do
	begin
		with Editor do
		begin
			EditType := EXG2ANTTLib_TLB.DropDownListType;
			AddItem(1,'First',Null);
			AddItem(2,'Second',Null);
			AddItem(3,'Third',Null);
		end;
	end;
	DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
	(IUnknown(Columns.Add('DropDownList-Related')) as EXG2ANTTLib_TLB.Column).Editor.EditType := EXG2ANTTLib_TLB.DropDownListType;
	with Items do
	begin
		CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := OleVariant(-1);
		CellValue[OleVariant(AddItem(OleVariant(2))),OleVariant(1)] := OleVariant(-1);
		CellValue[OleVariant(AddItem(OleVariant(3))),OleVariant(1)] := OleVariant(-1);
		LockedItemCount[EXG2ANTTLib_TLB.exBottom] := 1;
		h := LockedItem[EXG2ANTTLib_TLB.exBottom,0];
		ItemDivider[h] := 0;
		ItemDividerLineAlignment[h] := EXG2ANTTLib_TLB.DividerTop;
		CellEditorVisible[OleVariant(h),OleVariant(0)] := EXG2ANTTLib_TLB.exEditorHidden;
		CellSingleLine[OleVariant(h),OleVariant(0)] := EXG2ANTTLib_TLB.exCaptionWordWrap;
		CellValueFormat[OleVariant(h),OleVariant(0)] := EXG2ANTTLib_TLB.exHTML;
		CellValue[OleVariant(h),OleVariant(0)] := 'The drop down editor in the second column is filled during the <b>EditOpen event</b>, and the values are based on the selection ' + 
	'on the first column.';
	end;
	EndUpdate();
end
1398
Is it possible background color displayed when the mouse passes over an item
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Def');
	HotBackColor := RGB(0,0,128);
	HotForeColor := RGB(255,255,255);
	with Items do
	begin
		AddItem('Item A');
		AddItem('Item B');
		AddItem('Item C');
	end;
	EndUpdate();
end
1397
Is it possible to magnify a specified date and apply a different background color

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		DrawLevelSeparator := EXG2ANTTLib_TLB.exLevelNoLine;
		PaneWidth[False] := 64;
		FirstVisibleDate := '11/23/2011';
		LevelCount := 3;
		FirstWeekDay := EXG2ANTTLib_TLB.exMonday;
		AllowInsideZoom := True;
		InsideZooms.Add('11/29/2011').AllowCustomFormat := True;
		with InsideZooms.Item['11/29/2011'] do
		begin
			Width := 68;
			CustomFormat.BackColorChart := $e0e0e0;
		end;
	end;
	with Items do
	begin
		hA := AddItem('Task A');
		AddBar(hA,'Task','11/24/2011','11/26/2011','A',Null);
		hB := AddItem('Task B');
		AddBar(hB,'Task','11/28/2011','12/1/2011','B',Null);
		AddLink('LinkAB',hA,'A',hB,'B');
		Link['LinkAB',EXG2ANTTLib_TLB.exLinkStyle] := OleVariant(2);
		Link['LinkAB',EXG2ANTTLib_TLB.exLinkWidth] := OleVariant(2);
	end;
	EndUpdate();
end
1396
Could you please tell me how to add multiple bars to the one line

with G2antt1 do
begin
	BeginUpdate();
	Chart.FirstVisibleDate := '1/1/2002';
	Columns.Add('Task');
	with Items do
	begin
		h := AddItem('Task');
		AddBar(h,'Task','1/2/2002','1/4/2002','A',Null);
		AddBar(h,'Task','1/6/2002','1/10/2002','B',Null);
		ItemBar[h,'A',EXG2ANTTLib_TLB.exBarColor] := OleVariant(255);
		AddLink('AB',h,'A',h,'B');
	end;
	EndUpdate();
end
1395
My development environment does not have any Object,GetOcx,DefaultDispatch,GetControlUnknown,nativeObject, ... property, is there any alternative I can pass the component to PrintExt so I can get printed
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	Chart.FirstVisibleDate := '1/1/2001';
	with Items do
	begin
		h1 := AddItem('Task 1');
		AddBar(h1,'Task','1/2/2001','1/4/2001','K1',Null);
		h2 := AddItem('Task 2');
		AddBar(h2,'Task','1/5/2001','1/7/2001','K2',Null);
		AddLink('L1',h1,'K1',h2,'K2');
		Link['L1',EXG2ANTTLib_TLB.exLinkStartPos] := OleVariant(0);
	end;
	EndUpdate();
	Template := 'Dim p;p = CreateObject(`Exontrol.Print`);p.PrintExt = Me;p.AutoRelease = False;p.Preview();';
end
1394
My development environment does not have any Object,GetOcx,DefaultDispatch,GetControlUnknown,nativeObject, ... property, is there any alternative I can pass the component to PrintExt so I can get printed
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	Chart.FirstVisibleDate := '1/1/2001';
	with Items do
	begin
		h1 := AddItem('Task 1');
		AddBar(h1,'Task','1/2/2001','1/4/2001','K1',Null);
		h2 := AddItem('Task 2');
		AddBar(h2,'Task','1/5/2001','1/7/2001','K2',Null);
		AddLink('L1',h1,'K1',h2,'K2');
		Link['L1',EXG2ANTTLib_TLB.exLinkStartPos] := OleVariant(0);
	end;
	EndUpdate();
	with (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('Exontrol.Print'))) as EXPRINTLib_TLB.Print) do
	begin
		PrintExt := (IUnknown(G2antt1.ExecuteTemplate('me')) as EXG2ANTTLib_TLB.G2antt);
		Preview();
	end;
end
1393
Is it possible to display the bar's captions or labels with a different font/size

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	DefaultItemHeight := 24;
	with Chart do
	begin
		PaneWidth[False] := 64;
		FirstVisibleDate := '1/1/2001';
		LevelCount := 2;
	end;
	with Items do
	begin
		h := AddItem('Default');
		AddBar(h,'Task','1/2/2001','1/6/2001','','This is a the control''s font');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		h := AddItem('Smaller');
		AddBar(h,'Task','1/2/2001','1/6/2001','','<font ;5>This is a the control''s font with a smaller size');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		h := AddItem('Larger');
		AddBar(h,'Task','1/2/2001','1/6/2001','','<font ;15>This is a the control''s font with a larger size');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		h := AddItem('Tahoma 1');
		AddBar(h,'Task','1/2/2001','1/6/2001','','<font Tahoma>This is using a Tahoma font');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		h := AddItem('Tahoma 2');
		AddBar(h,'Task','1/2/2001','1/6/2001','','<font Tahoma;14>This is using a <b>Tahoma</b> font with a different size');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
	end;
	EndUpdate();
end
1392
How can I apply the same ConditionalFormat on more than 1(one) column (multiple columns and not on item)
with G2antt1 do
begin
	BeginUpdate();
	with ConditionalFormats.Add('1','K1') do
	begin
		BackColor := $ff;
		ApplyTo := EXG2ANTTLib_TLB.FormatApplyToEnum($1);
	end;
	with ConditionalFormats.Add('1','K2') do
	begin
		BackColor := $ff;
		ApplyTo := EXG2ANTTLib_TLB.FormatApplyToEnum($2);
	end;
	MarkSearchColumn := False;
	DrawGridLines := EXG2ANTTLib_TLB.exRowLines;
	with Columns do
	begin
		Add('Column 1');
		Add('Column 2');
		Add('Column 3');
	end;
	with Items do
	begin
		AddItem(Null);
		AddItem(Null);
		AddItem(Null);
	end;
	EndUpdate();
end
1391
Is it possible to change the height for all items at once
with G2antt1 do
begin
	BeginUpdate();
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	Columns.Add('Items');
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[0] := True;
	end;
	EndUpdate();
	DefaultItemHeight := 12;
	Items.ItemHeight[0] := 12;
end
1390
Is it possible to include the weekday when displaying the date

with G2antt1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Tasks');
		with (IUnknown(Add('Start')) as EXG2ANTTLib_TLB.Column) do
		begin
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
			Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
			FormatColumn := 'value + ''<font ;6> ''  + (weekday(date(value)) case(0:''Sun'';1:''Mon'';2:''Tue'';3:''Wed'';4:''Thu'';5:''Fri'';6:''Sat''))';
		end;
		with (IUnknown(Add('End')) as EXG2ANTTLib_TLB.Column) do
		begin
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
			Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
			FormatColumn := 'value + ''<font ;6> ''  + (weekday(date(value)) case(0:''Sun'';1:''Mon'';2:''Tue'';3:''Wed'';4:''Thu'';5:''Fri'';6:''Sat''))';
		end;
	end;
	with Chart do
	begin
		FirstVisibleDate := '9/20/2006';
		AllowLinkBars := False;
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		LevelCount := 2;
		PaneWidth[False] := 256;
		NonworkingDays := 0;
		FirstWeekDay := EXG2ANTTLib_TLB.exMonday;
	end;
	with Items do
	begin
		AllowCellValueToItemBar := True;
		AddBar(AddItem('Task 1'),'Task','9/21/2006','9/24/2006',Null,Null);
		AddBar(AddItem('Task 2'),'Task','9/22/2006','9/25/2006',Null,Null);
		AddBar(AddItem('Task 3'),'Task','9/23/2006','9/26/2006',Null,Null);
	end;
	EndUpdate();
end
1389
I need my chart to display the end date with on day less. How can I do this (Method 1)

with G2antt1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Tasks');
		(IUnknown(Add('Start')) as EXG2ANTTLib_TLB.Column).Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
		with (IUnknown(Add('End')) as EXG2ANTTLib_TLB.Column) do
		begin
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
			FormatColumn := 'shortdate(date(value)-1)';
		end;
	end;
	with Chart do
	begin
		FirstVisibleDate := '9/20/2006';
		AllowLinkBars := False;
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		LevelCount := 2;
		PaneWidth[False] := 196;
		NonworkingDays := 0;
	end;
	with Items do
	begin
		AllowCellValueToItemBar := True;
		AddBar(AddItem('Task 1'),'Task','9/21/2006','9/24/2006',Null,Null);
		AddBar(AddItem('Task 2'),'Task','9/22/2006','9/25/2006',Null,Null);
		AddBar(AddItem('Task 3'),'Task','9/23/2006','9/26/2006',Null,Null);
	end;
	EndUpdate();
end
1388
Is it possible to display my custom time-units

with G2antt1 do
begin
	with Chart do
	begin
		PaneWidth[False] := 0;
		LevelCount := 2;
		FirstVisibleDate := OleVariant(0);
		NonworkingDays := 0;
		with Level[0] do
		begin
			Unit := EXG2ANTTLib_TLB.exDay;
			Count := 16;
			Alignment := EXG2ANTTLib_TLB.CenterAlignment;
			Label := '<%i%>';
			FormatLabel := '''Half '' + (1 + (value/16) mod 2)';
		end;
		with Level[1] do
		begin
			Label := '<%i%>';
			FormatLabel := '1 + value mod 16';
			ReplaceLabel[2] := '<font ;10><B>Y';
		end;
		AdjustLevelsToBase := True;
		ScrollRange[EXG2ANTTLib_TLB.exStartDate] := OleVariant(0);
		ScrollRange[EXG2ANTTLib_TLB.exEndDate] := OleVariant(31);
	end;
end
1387
Is it possible to add new records and see them in the control's view using the DataSource

// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.G2antt1AddItem(ASender: TObject; Item : HITEM);
begin
	with G2antt1 do
	begin
		with Items do
		begin
			SelectItem[Item] := True;
			EnsureVisibleItem(Item);
		end;
		Edit(OleVariant(0));
	end
end;

// ButtonClick event - Occurs when user clicks on the cell's button.
procedure TForm1.G2antt1ButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer;Key : OleVariant);
begin
	with G2antt1 do
	begin
		(IUnknown(DataSource) as ADODB_TLB.Recordset).AddNew(Null,Null);
	end
end;

with G2antt1 do
begin
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Recordset'))) as ADODB_TLB.Recordset);
	with rs.Fields do
	begin
		Append('Task',8,Null,Null,Null);
		Append('Start',7,Null,Null,Null);
		Append('End',7,Null,Null,Null);
	end;
	rs.Open(Null,Null,Null,Null,Null);
	DrawGridLines := EXG2ANTTLib_TLB.exRowLines;
	DetectAddNew := True;
	DetectDelete := True;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	with Items do
	begin
		LockedItemCount[EXG2ANTTLib_TLB.exTop] := 1;
		h := LockedItem[EXG2ANTTLib_TLB.exTop,0];
		ItemDivider[h] := 0;
		ItemHeight[h] := 22;
		CellValue[OleVariant(h),OleVariant(0)] := 'AddNew';
		CellHasButton[OleVariant(h),OleVariant(0)] := True;
		CellHAlignment[OleVariant(h),OleVariant(0)] := EXG2ANTTLib_TLB.CenterAlignment;
	end;
end
1386
How can I limit the bars to scrolling range only
// CreateBar event - Fired when the user creates a new bar.
procedure TForm1.G2antt1CreateBar(ASender: TObject; Item : HITEM;DateStart : TDateTime;DateEnd : TDateTime);
begin
	with G2antt1 do
	begin
		with Items do
		begin
			ItemBar[Item,'newbar',EXG2ANTTLib_TLB.exBarMinStart] := G2antt1.Chart.ScrollRange[EXG2ANTTLib_TLB.exMinDate];
			ItemBar[Item,'newbar',EXG2ANTTLib_TLB.exBarMaxEnd] := G2antt1.Chart.ScrollRange[EXG2ANTTLib_TLB.exMaxDate];
		end;
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		LevelCount := 2;
		PaneWidth[False] := 56;
		ScrollRange[EXG2ANTTLib_TLB.exStartDate] := '1/1/2001';
		ScrollRange[EXG2ANTTLib_TLB.exEndDate] := '1/15/2001';
		FirstVisibleDate := '1/12/2001';
		AllowCreateBar := EXG2ANTTLib_TLB.exCreateBarAuto;
	end;
	with Items do
	begin
		AddItem('Task 1');
		AddItem('Task 2');
		AddItem('Task 3');
	end;
	EndUpdate();
end
1385
How do I get the handle of the last added item
with G2antt1 do
begin
	Columns.Add('Def');
	with Items do
	begin
		AddItem(OleVariant(1));
		AddItem(OleVariant(2));
		OutputDebugString( ItemByIndex[ItemCount] );
	end;
end
1384
How can I set the charts date format to any other international Format then the US version. I would need "dd.mmm.yyyy" instead of "mmm.d.'yy"
with G2antt1 do
begin
	with Chart do
	begin
		PaneWidth[False] := 0;
		LevelCount := 2;
		with Level[0] do
		begin
			Label := '<%dd%>.<%mmm%>.<%yyyy%>';
			Unit := EXG2ANTTLib_TLB.exWeek;
			Alignment := Integer(EXG2ANTTLib_TLB.exHOutside) Or Integer(EXG2ANTTLib_TLB.CenterAlignment);
		end;
	end;
end
1383
Is it possible to define the bar colors, and have the cumulative histogram showing the same colors

with G2antt1 do
begin
	BeginUpdate();
	SingleSel := False;
	with Chart do
	begin
		LevelCount := 2;
		AllowLinkBars := False;
		DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
		FirstVisibleDate := '12/24/2000';
		HistogramVisible := True;
		HistogramHeight := 64;
		PaneWidth[False] := 128;
		HistogramView := Integer(EXG2ANTTLib_TLB.exHistogramNoGrouping) Or Integer(EXG2ANTTLib_TLB.exHistogramLeafItems) Or Integer(EXG2ANTTLib_TLB.exHistogramUnlockedItems) Or Integer(EXG2ANTTLib_TLB.exHistogramSelectedItems);
		with Bars.Item['Task'] do
		begin
			HistogramType := EXG2ANTTLib_TLB.exHistCumulative;
			HistogramItems := 6;
			HistogramPattern := Pattern;
			HistogramCumulativeOriginalColorBars := EXG2ANTTLib_TLB.exKeepOriginalColor;
			OverlaidType := EXG2ANTTLib_TLB.exOverlaidBarsOffset;
		end;
	end;
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Project');
		ItemBold[h] := True;
		SelectableItem[h] := False;
		h1 := InsertItem(h,Null,'Item 1');
		AddBar(h1,'Task','1/2/2001','1/4/2001',Null,Null);
		h1 := InsertItem(h,Null,'Item 2');
		AddBar(h1,'Task','1/3/2001','1/5/2001',Null,Null);
		h1 := InsertItem(h,Null,'Item 3');
		AddBar(h1,'Task','1/4/2001','1/6/2001',Null,Null);
		AddBar(h1,'Task','1/1/2001','1/3/2001','green',Null);
		ItemBar[h1,'green',EXG2ANTTLib_TLB.exBarColor] := OleVariant(65280);
		AddBar(h1,'Task','1/8/2001','1/10/2001','red',Null);
		ItemBar[h1,'red',EXG2ANTTLib_TLB.exBarColor] := OleVariant(255);
		ExpandItem[h] := True;
		SelectAll();
	end;
	EndUpdate();
end
1382
How can I hide the values shown in the legend when cumulative histogram is displayed

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		HistogramVisible := True;
		HistogramHeight := 64;
		PaneWidth[False] := 128;
		HistogramView := Integer(EXG2ANTTLib_TLB.exHistogramNoGrouping) Or Integer(EXG2ANTTLib_TLB.exHistogramLeafItems) Or Integer(EXG2ANTTLib_TLB.exHistogramUnlockedItems) Or Integer(EXG2ANTTLib_TLB.exHistogramCheckedItems);
		with Bars.Item['Task'] do
		begin
			HistogramPattern := EXG2ANTTLib_TLB.exPatternSolid;
			HistogramType := EXG2ANTTLib_TLB.exHistCumulative;
			HistogramItems := 6;
			HistogramRulerLinesColor := $80;
			HistogramBorderColor := $1;
			HistogramCumulativeShowLegend := 65535;
			HistogramCumulativeOriginalColorBars := EXG2ANTTLib_TLB.exChangeColor;
		end;
	end;
	with (IUnknown(Columns.Add('Column')) as EXG2ANTTLib_TLB.Column) do
	begin
		Def[EXG2ANTTLib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with Items do
	begin
		h := AddItem('Project 1');
		AddBar(InsertItem(h,Null,'Item 1'),'Task','1/2/2001','1/4/2001',Null,Null);
		AddBar(InsertItem(h,Null,'Item 2'),'Task','1/3/2001','1/5/2001',Null,Null);
		AddBar(InsertItem(h,Null,'Item 3'),'Task','1/4/2001','1/6/2001',Null,Null);
		AddBar(InsertItem(h,Null,'Item 4'),'Task','1/2/2001','1/8/2001',Null,Null);
		CellState[OleVariant(ItemByIndex[1]),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
1381
Is it possible to define the bar colors, and have the cumulative histogram showing the same colors

with G2antt1 do
begin
	BeginUpdate();
	SelBackColor := BackColor;
	SelForeColor := ForeColor;
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		HistogramVisible := True;
		HistogramHeight := 64;
		PaneWidth[False] := 128;
		HistogramView := Integer(EXG2ANTTLib_TLB.exHistogramNoGrouping) Or Integer(EXG2ANTTLib_TLB.exHistogramLeafItems) Or Integer(EXG2ANTTLib_TLB.exHistogramUnlockedItems) Or Integer(EXG2ANTTLib_TLB.exHistogramCheckedItems);
		with Bars.Item['Task'] do
		begin
			Color := $808080;
			HistogramType := EXG2ANTTLib_TLB.exHistCumulative;
			HistogramItems := 6;
			HistogramRulerLinesColor := $80;
			HistogramBorderColor := $1;
			HistogramCumulativeColors := 2;
			HistogramCumulativeColor[0] := $ff0000;
			HistogramCumulativeColor[1] := $ff0000;
			HistogramCumulativeOriginalColorBars := EXG2ANTTLib_TLB.exChangeColor;
			HistogramPattern := Pattern;
			HistogramCumulativeShowLegend := 65535;
		end;
	end;
	with (IUnknown(Columns.Add('Column')) as EXG2ANTTLib_TLB.Column) do
	begin
		Def[EXG2ANTTLib_TLB.exCellHasCheckBox] := OleVariant(True);
		PartialCheck := True;
	end;
	with Items do
	begin
		h := AddItem('Project 1');
		AddBar(InsertItem(h,Null,'Item 1'),'Task','1/2/2001','1/4/2001',Null,Null);
		AddBar(InsertItem(h,Null,'Item 2'),'Task','1/3/2001','1/5/2001',Null,Null);
		AddBar(InsertItem(h,Null,'Item 3'),'Task','1/4/2001','1/6/2001',Null,Null);
		AddBar(InsertItem(h,Null,'Item 4'),'Task','1/2/2001','1/8/2001',Null,Null);
		CellState[OleVariant(ItemByIndex[1]),OleVariant(0)] := 1;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
1380
Is it possible to show the non-working pattern over the bars

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		NonworkingDaysPattern := EXG2ANTTLib_TLB.exPatternBDiagonal;
		NonworkingDaysColor := $0;
		PaneWidth[False] := 40;
		FirstVisibleDate := '6/20/2005';
		HistogramVisible := True;
		HistogramHeight := 64;
		HistogramView := Integer(EXG2ANTTLib_TLB.exHistogramBackground) Or Integer(EXG2ANTTLib_TLB.exHistogramAllItems);
		LevelCount := 2;
		with Bars do
		begin
			with Add('Empty') do
			begin
				Color := $0;
				Pattern := EXG2ANTTLib_TLB.exPatternFDiagonal;
				Shape := EXG2ANTTLib_TLB.exShapeSolidFrameless;
			end;
			with Add('Task:Empty') do
			begin
				Shortcut := 'Task';
				HistogramItems := -5;
				HistogramCriticalValue := 3;
				HistogramType := EXG2ANTTLib_TLB.exHistOverload;
				HistogramPattern := Pattern;
				Def[EXG2ANTTLib_TLB.exBarCaption] := '<%=%258%> working days bar';
				Def[EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
				Def[EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
			end;
		end;
		UnitWidthNonworking := -12;
		Level[1].FormatLabel := 'weekday(dvalue) in (0,6) ? `` : value';
	end;
	with Items do
	begin
		AddBar(AddItem('Task A'),'Task','6/23/2005','6/29/2005','',Null);
		AddBar(AddItem('Task B'),'Task','6/24/2005','6/28/2005','',Null);
	end;
	EndUpdate();
end
1379
I'm showing values from a ado recordset from sql 2005. When I try to edit a column with integers, it just skips back to the original numbers after pressing enter..., why
// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.G2antt1AddItem(ASender: TObject; Item : HITEM);
begin
	with G2antt1 do
	begin
		with Items do
		begin
			AddBar(Item,'Task',CellValue[OleVariant(Item),OleVariant(2)],CellValue[OleVariant(Item),OleVariant(4)],Null,Null);
		end;
	end
end;

// Error event - Fired when an internal error occurs.
procedure TForm1.G2antt1Error(ASender: TObject; Error : Integer;Description : WideString);
begin
	with G2antt1 do
	begin
		OutputDebugString( Error );
		OutputDebugString( Description );
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '8/3/1994';
		PaneWidth[False] := 256;
		LevelCount := 2;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		FirstWeekDay := EXG2ANTTLib_TLB.exMonday;
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
	end;
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb',1,1,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	Items.AllowCellValueToItemBar := True;
	Columns.Item[OleVariant(2)].Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
	Columns.Item[OleVariant(4)].Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
	EndUpdate();
end
1378
Is it possible to reduce the non-working parts of the control

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		PaneWidth[False] := 40;
		FirstVisibleDate := '6/20/2005';
		HistogramVisible := True;
		HistogramHeight := 64;
		HistogramView := EXG2ANTTLib_TLB.exHistogramAllItems;
		LevelCount := 2;
		with Bars.Item['Task'] do
		begin
			HistogramType := EXG2ANTTLib_TLB.exHistOverAllocation;
			HistogramPattern := Pattern;
		end;
		UnitWidthNonworking := -8;
		Level[1].FormatLabel := 'weekday(dvalue) in (0,6) ? `` : value';
	end;
	with Items do
	begin
		h := AddItem('Task A');
		AddBar(h,'Task','6/23/2005','6/29/2005','','4 working days bar');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarCanResize] := OleVariant(False);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarEffort] := OleVariant(4);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
		h := AddItem('Task B');
		AddBar(h,'Task','6/28/2005','6/30/2005','','2 working days bar');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarCanResize] := OleVariant(False);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarEffort] := OleVariant(2);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
	end;
	EndUpdate();
end
1377
I don't want to see the "schedule"/show "workload" in non-working days part of the histogram

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		PaneWidth[False] := 40;
		FirstVisibleDate := '6/20/2005';
		HistogramVisible := True;
		HistogramHeight := 64;
		HistogramView := EXG2ANTTLib_TLB.exHistogramAllItems;
		LevelCount := 2;
		with Bars.Item['Task'] do
		begin
			HistogramType := EXG2ANTTLib_TLB.exHistOverAllocation;
			HistogramPattern := Pattern;
		end;
		ShowNonworkingDates := False;
		ShowNonworkingUnits := False;
	end;
	with Items do
	begin
		h := AddItem('Task A');
		AddBar(h,'Task','6/23/2005','6/29/2005','','4 working days bar');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarCanResize] := OleVariant(False);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarEffort] := OleVariant(4);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
		h := AddItem('Task B');
		AddBar(h,'Task','6/28/2005','6/30/2005','','2 working days bar');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarCanResize] := OleVariant(False);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarEffort] := OleVariant(2);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
	end;
	EndUpdate();
end
1376
The control shows, and handles non-working days PERFECT, but how is it possible to reflect this in the Histogram. I don't want to "schedule"/show "workload" in non-working days...

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		PaneWidth[False] := 40;
		FirstVisibleDate := '6/20/2005';
		HistogramVisible := True;
		HistogramHeight := 64;
		HistogramView := EXG2ANTTLib_TLB.exHistogramAllItems;
		LevelCount := 2;
		with Bars.Item['Task'] do
		begin
			HistogramType := EXG2ANTTLib_TLB.exHistOverAllocation;
			HistogramPattern := Pattern;
		end;
	end;
	with Items do
	begin
		h := AddItem('Task A');
		AddBar(h,'Task','6/23/2005','6/29/2005','','4 working days bar');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarCanResize] := OleVariant(False);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarEffort] := OleVariant(4);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
		h := AddItem('Task B');
		AddBar(h,'Task','6/28/2005','6/30/2005','','2 working days bar');
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarCanResize] := OleVariant(False);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarEffort] := OleVariant(2);
		ItemBar[h,'',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
	end;
	EndUpdate();
end
1375
When I do select the button in the overview-zoom I want the scaling to change accordingly. Can I set different scales per selected zoom level

// OverviewZoom event - Occurs once the user selects a new time scale unit in the overview zoom area.
procedure TForm1.G2antt1OverviewZoom(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( Chart.UnitScale );
	end
end;

with G2antt1 do
begin
	with Chart do
	begin
		PaneWidth[False] := 0;
		LevelCount := 2;
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
		AllowOverviewZoom := EXG2ANTTLib_TLB.exAlwaysZoom;
		Label[EXG2ANTTLib_TLB.exSecond] := '';
		Label[EXG2ANTTLib_TLB.exYear] := '';
	end;
end
1374
How do I display Icons instead of text in the overview zoom area

with G2antt1 do
begin
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	with Chart do
	begin
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
		AllowOverviewZoom := EXG2ANTTLib_TLB.exAlwaysZoom;
		Label[EXG2ANTTLib_TLB.exSecond] := '';
		Label[EXG2ANTTLib_TLB.exYear] := '';
		OutputDebugString( OverviewZoomCaption );
		OverviewZoomCaption := 'Year|½Year|¼Year|Month|Third|<img>1</img>|Day|Hour|Min|Sec';
	end;
end
1373
How do I get it to only display Min, Hour, Day, Week , Month, ie remove Sec and Year in the overview area
with G2antt1 do
begin
	with Chart do
	begin
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
		AllowOverviewZoom := EXG2ANTTLib_TLB.exAlwaysZoom;
		Label[EXG2ANTTLib_TLB.exSecond] := '';
		Label[EXG2ANTTLib_TLB.exYear] := '';
	end;
end
1372
Is it possible to show quarter hours markers

with G2antt1 do
begin
	BeginUpdate();
	GridLineColor := RGB(0,0,0);
	VisualAppearance.Add(3,'gBFLBCJwBAEHhEJAEGg4BdMIQAAYAQGKIYBkAKBQAGaAoDDUNw5QwAAwjSKkEwsACEIrjKCRShyCYZRhGcTAFBMIhkGoSZKlCIRVDCKYJDbKACSFKkNQ7AabZBgOQJVg' + 
	'OKovThKcIybQAASJCKRY7nUIIJA+SoDSRAbqhYIgASnKqLJAkACIJJAaRjHQdJxGKKMQANBghCZseKhWgkKIJUxAdLTWAAMQuaCoZ5icRAca2fJ+XzfeBYDgmAYNQbDc' + 
	'JhHCMMwXDaJZBiGJ4dimI4rR7JIDzDJ8cxbEKTZ5meg5boGRZNTrMQA0fQ9MynK6vahfOi7DpuaZnWrcMb2fYNZwrGq0bxoW58BwmP5/XrkNa4XgcVgmAUBA');
	HeaderHeight := 20;
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 0;
		LevelCount := 2;
		UnitScale := EXG2ANTTLib_TLB.exHour;
		with Level[0] do
		begin
			Alignment := EXG2ANTTLib_TLB.exHOutside;
			Label := '<%dddd%>, <%mmmm%> <b><%d%></b>, <%yyyy%>';
			DrawTickLines := EXG2ANTTLib_TLB.exLevelSolidLine;
		end;
		with Level[1] do
		begin
			Label := '<%hh%>:00';
			BackColor := $3000000;
			DrawTickLines := EXG2ANTTLib_TLB.exLevelSolidLine;
		end;
		DrawLevelSeparator := EXG2ANTTLib_TLB.exLevelSolidLine;
		UnitWidth := 64;
		ResizeUnitScale := EXG2ANTTLib_TLB.exMinute;
		ResizeUnitCount := 15;
	end;
	EndUpdate();
end
1371
How can I ensure or always show the labels on the chart part, when scrolling the chart to left or right
with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 0;
		LevelCount := 2;
		UnitWidth := 48;
		UnitScale := EXG2ANTTLib_TLB.exHour;
		with Level[0] do
		begin
			Alignment := Integer(EXG2ANTTLib_TLB.exHOutside) Or Integer(EXG2ANTTLib_TLB.CenterAlignment);
			Label := '<%dddd%>, <%mmmm%> <b><%d%></b>, <%yyyy%>';
		end;
		Level[1].Label := '<%hh%>:00';
	end;
	EndUpdate();
end
1370
I associate the Start and End columns with bars, but some of them are not shown. What am I doing wrong
with G2antt1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	Items.AllowCellValueToItemBar := True;
	with Chart do
	begin
		LevelCount := 2;
		FirstVisibleDate := '12/25/2000';
		PaneWidth[False] := 128;
	end;
	with (IUnknown(Columns.Add('Start')) as EXG2ANTTLib_TLB.Column) do
	begin
		Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
		Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'K1';
	end;
	with (IUnknown(Columns.Add('End')) as EXG2ANTTLib_TLB.Column) do
	begin
		Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
		Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'K1';
	end;
	with Items do
	begin
		AddBar(AddItem(Null),'Task','1/1/2001','1/5/2001','K1',Null);
		AddBar(AddItem(Null),'Task','1/2/2001','1/6/2001','K1',Null);
		AddBar(AddItem(Null),'Task','1/3/2001','1/7/2001','????','????');
	end;
	EndUpdate();
end
1369
How can I implement OLE Drag and Drop operation
// OLEStartDrag event - Occurs when the OLEDrag method is called.
procedure TForm1.G2antt1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
	// Data.SetData("your data to drag")
	with G2antt1 do
	begin
		AllowedEffects := 2;
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	Columns.Add('Default');
	with Items do
	begin
		AddItem('Item 1');
		AddItem('Item 2');
		AddItem('Item 3');
		AddItem('Item 4');
		AddItem('Item 5');
	end;
	OLEDropMode := EXG2ANTTLib_TLB.exOLEDropManual;
	EndUpdate();
end
1368
I can not associate the bar's start and end properties with my start/end columns, only if the bar's key is empty or null. What can I do

// ButtonClick event - Occurs when user clicks on the cell's button.
procedure TForm1.G2antt1ButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer;Key : OleVariant);
begin
	with G2antt1 do
	begin
		BeginUpdate();
		with Columns do
		begin
			Item['Tasks'].Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'B';
			Item['Start'].Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'B';
			Item['End'].Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'B';
		end;
		with Items do
		begin
			CellValue[OleVariant(Item),OleVariant(1)] := 'B';
			ItemBar[0,'B',EXG2ANTTLib_TLB.exBarColor] := OleVariant(0);
			ItemBar[0,'A',EXG2ANTTLib_TLB.exBarColor] := OleVariant(16775408);
		end;
		EndUpdate();
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	with Columns do
	begin
		with (IUnknown(Add('Tasks')) as EXG2ANTTLib_TLB.Column) do
		begin
			Width := 32;
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(3);
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'A';
		end;
		with (IUnknown(Add('Start')) as EXG2ANTTLib_TLB.Column) do
		begin
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'A';
			Editor.EditType := EXG2ANTTLib_TLB.DateType;
		end;
		with (IUnknown(Add('End')) as EXG2ANTTLib_TLB.Column) do
		begin
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
			Def[EXG2ANTTLib_TLB.exCellValueToItemBarKey] := 'A';
			Editor.EditType := EXG2ANTTLib_TLB.DateType;
		end;
	end;
	with Chart do
	begin
		FirstVisibleDate := '9/20/2006';
		AllowLinkBars := True;
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		LevelCount := 2;
		PaneWidth[False] := 196;
		with Bars.Item['Task'] do
		begin
			Pattern := EXG2ANTTLib_TLB.exPatternBDiagonal;
			OverlaidType := Integer(EXG2ANTTLib_TLB.exOverlaidBarsStackAutoArrange) Or Integer(EXG2ANTTLib_TLB.exOverlaidBarsStack);
			Overlaid[EXG2ANTTLib_TLB.exOverlaidBarsTransparent] := OleVariant(80);
		end;
	end;
	with Items do
	begin
		LockedItemCount[EXG2ANTTLib_TLB.exTop] := 1;
		h := LockedItem[EXG2ANTTLib_TLB.exTop,0];
		CellValue[OleVariant(h),OleVariant(0)] := 'Select';
		CellHasButton[OleVariant(h),OleVariant(0)] := True;
		CellMerge[OleVariant(h),OleVariant(1)] := OleVariant(2);
		CellValue[OleVariant(h),OleVariant(1)] := 'A';
		CellEditor[OleVariant(h),OleVariant(1)].EditType := EXG2ANTTLib_TLB.EditType;
	end;
	with Items do
	begin
		AllowCellValueToItemBar := True;
		h := AddItem('Task 1');
		AddBar(h,'Task','9/21/2006','9/24/2006','A','A');
		AddBar(h,'Task','9/25/2006','9/28/2006','B','B');
		ItemBar[h,'B',EXG2ANTTLib_TLB.exBarColor] := OleVariant(16775408);
		h := AddItem('Task 2');
		AddBar(h,'Task','9/22/2006','9/25/2006','A','A');
		AddBar(h,'Task','9/26/2006','9/29/2006','B','B');
		ItemBar[h,'B',EXG2ANTTLib_TLB.exBarColor] := OleVariant(16775408);
	end;
	EndUpdate();
end
1367
How can I determine the order of the events
// AddLink event - Occurs when the user links two bars using the mouse.
procedure TForm1.G2antt1AddLink(ASender: TObject; LinkKey : WideString);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'AddLink' );
		OutputDebugString( LinkKey );
	end
end;

// AfterExpandItem event - Fired after an item is expanded (collapsed).
procedure TForm1.G2antt1AfterExpandItem(ASender: TObject; Item : HITEM);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'AfterExpandItem' );
		OutputDebugString( Item );
	end
end;

// AllowLink event - Notifies at runtime when a link between two bars is possible.
procedure TForm1.G2antt1AllowLink(ASender: TObject; StartItem : HITEM;StartBarKey : OleVariant;EndItem : HITEM;EndBarKey : OleVariant;var LinkKey : OleVariant;var Cancel : WordBool);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'AllowLink' );
		OutputDebugString( StartItem );
		OutputDebugString( StartBarKey );
		OutputDebugString( EndItem );
		OutputDebugString( EndBarKey );
		OutputDebugString( LinkKey );
	end
end;

// AnchorClick event - Occurs when an anchor element is clicked.
procedure TForm1.G2antt1AnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'AnchorClick' );
		OutputDebugString( AnchorID );
		OutputDebugString( Options );
	end
end;

// BarParentChange event - Occurs just before moving a bar from current item to another item.
procedure TForm1.G2antt1BarParentChange(ASender: TObject; Item : HITEM;Key : OleVariant;NewItem : HITEM;var Cancel : WordBool);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'BarParentChange' );
		OutputDebugString( Item );
		OutputDebugString( Key );
		OutputDebugString( NewItem );
	end
end;

// BarResize event - Occurs when a bar is moved or resized.
procedure TForm1.G2antt1BarResize(ASender: TObject; Item : HITEM;Key : OleVariant);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'BarResize' );
		OutputDebugString( Item );
		OutputDebugString( Key );
	end
end;

// BarResizing event - Occurs when a bar is moving or resizing.
procedure TForm1.G2antt1BarResizing(ASender: TObject; Item : HITEM;Key : OleVariant);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'BarResizing' );
		OutputDebugString( Item );
		OutputDebugString( Key );
	end
end;

// BeforeExpandItem event - Fired before an item is about to be expanded (collapsed).
procedure TForm1.G2antt1BeforeExpandItem(ASender: TObject; Item : HITEM;var Cancel : OleVariant);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'BeforeExpandItem' );
		OutputDebugString( Item );
	end
end;

// ButtonClick event - Occurs when user clicks on the cell's button.
procedure TForm1.G2antt1ButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer;Key : OleVariant);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ButtonClick' );
		OutputDebugString( Item );
		OutputDebugString( ColIndex );
		OutputDebugString( Key );
	end
end;

// CellImageClick event - Fired after the user clicks on the image's cell area.
procedure TForm1.G2antt1CellImageClick(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'CellImageClick' );
		OutputDebugString( Item );
		OutputDebugString( ColIndex );
	end
end;

// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.G2antt1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'CellStateChanged' );
		OutputDebugString( Item );
		OutputDebugString( ColIndex );
	end
end;

// Change event - Occurs when the user changes the cell's content.
procedure TForm1.G2antt1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'Change' );
		OutputDebugString( Item );
		OutputDebugString( ColIndex );
		OutputDebugString( NewValue );
	end
end;

// ChartEndChanging event - Occurs after the chart has been changed.
procedure TForm1.G2antt1ChartEndChanging(ASender: TObject; Operation : BarOperationEnum);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ChartEndChanging' );
		OutputDebugString( Operation );
	end
end;

// ChartSelectionChanged event - Occurs when the user selects objects in the chart area.
procedure TForm1.G2antt1ChartSelectionChanged(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ChartSelectionChanged' );
	end
end;

// ChartStartChanging event - Occurs when the chart is about to be changed.
procedure TForm1.G2antt1ChartStartChanging(ASender: TObject; Operation : BarOperationEnum);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ChartStartChanging' );
		OutputDebugString( Operation );
	end
end;

// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
procedure TForm1.G2antt1Click(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'Click' );
	end
end;

// ColumnClick event - Fired after the user clicks on column's header.
procedure TForm1.G2antt1ColumnClick(ASender: TObject; Column : IColumn);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ColumnClick' );
	end
end;

// CreateBar event - Fired when the user creates a new bar.
procedure TForm1.G2antt1CreateBar(ASender: TObject; Item : HITEM;DateStart : TDateTime;DateEnd : TDateTime);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'CreateBar' );
		OutputDebugString( Item );
		OutputDebugString( DateStart );
		OutputDebugString( DateEnd );
	end
end;

// DateChange event - Occurs when the first visible date is changed.
procedure TForm1.G2antt1DateChange(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'DateChange' );
	end
end;

// DblClick event - Occurs when the user dblclk the left mouse button over an object.
procedure TForm1.G2antt1DblClick(ASender: TObject; Shift : Smallint;X : Integer;Y : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'DblClick' );
		OutputDebugString( Shift );
		OutputDebugString( X );
		OutputDebugString( Y );
		Edit(Null);
	end
end;

// Edit event - Occurs just before editing the focused cell.
procedure TForm1.G2antt1Edit(ASender: TObject; Item : HITEM;ColIndex : Integer;var Cancel : WordBool);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'Edit' );
		OutputDebugString( Item );
		OutputDebugString( ColIndex );
	end
end;

// EditClose event - Occurs when the edit operation ends.
procedure TForm1.G2antt1EditClose(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'EditClose' );
	end
end;

// EditOpen event - Occurs when the edit operation starts.
procedure TForm1.G2antt1EditOpen(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'EditOpen' );
	end
end;

// FilterChange event - Occurs when the filter was changed.
procedure TForm1.G2antt1FilterChange(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'FilterChange' );
	end
end;

// FilterChanging event - Notifies your application that the filter is about to change.
procedure TForm1.G2antt1FilterChanging(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'FilterChanging' );
	end
end;

// FocusChanged event - Occurs when a cell gets the focus.
procedure TForm1.G2antt1FocusChanged(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'FocusChanged' );
	end
end;

// InsideZoom event - Notifies your application that a date is about to be magnified.
procedure TForm1.G2antt1InsideZoom(ASender: TObject; DateTime : TDateTime);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'InsideZoom' );
		OutputDebugString( DateTime );
	end
end;

// KeyDown event - Occurs when the user presses a key while an object has the focus.
procedure TForm1.G2antt1KeyDown(ASender: TObject; var KeyCode : Smallint;Shift : Smallint);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'KeyDown' );
		OutputDebugString( KeyCode );
		OutputDebugString( Shift );
	end
end;

// KeyPress event - Occurs when the user presses and releases an ANSI key.
procedure TForm1.G2antt1KeyPress(ASender: TObject; var KeyAscii : Smallint);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'KeyPress' );
		OutputDebugString( KeyAscii );
	end
end;

// KeyUp event - Occurs when the user releases a key while an object has the focus.
procedure TForm1.G2antt1KeyUp(ASender: TObject; var KeyCode : Smallint;Shift : Smallint);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'KeyUp' );
		OutputDebugString( KeyCode );
		OutputDebugString( Shift );
	end
end;

// LayoutChanged event - Occurs when column's position or column's size is changed.
procedure TForm1.G2antt1LayoutChanged(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'LayoutChanged' );
	end
end;

// MouseDown event - Occurs when the user presses a mouse button.
procedure TForm1.G2antt1MouseDown(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'MouseDown' );
		OutputDebugString( Button );
		OutputDebugString( Shift );
		OutputDebugString( X );
		OutputDebugString( Y );
	end
end;

// MouseMove event - Occurs when the user moves the mouse.
procedure TForm1.G2antt1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
end;

// MouseUp event - Occurs when the user releases a mouse button.
procedure TForm1.G2antt1MouseUp(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'MouseUp' );
		OutputDebugString( Button );
		OutputDebugString( Shift );
		OutputDebugString( X );
		OutputDebugString( Y );
	end
end;

// OffsetChanged event - Occurs when the scroll position has been changed.
procedure TForm1.G2antt1OffsetChanged(ASender: TObject; Horizontal : WordBool;NewVal : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'OffsetChanged' );
		OutputDebugString( Horizontal );
		OutputDebugString( NewVal );
	end
end;

// OversizeChanged event - Occurs when the right range of the scroll has been changed.
procedure TForm1.G2antt1OversizeChanged(ASender: TObject; Horizontal : WordBool;NewVal : Integer);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'OversizeChanged' );
		OutputDebugString( Horizontal );
		OutputDebugString( NewVal );
	end
end;

// OverviewZoom event - Occurs once the user selects a new time scale unit in the overview zoom area.
procedure TForm1.G2antt1OverviewZoom(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'OverviewZoom' );
	end
end;

// RClick event - Fired when right mouse button is clicked
procedure TForm1.G2antt1RClick(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'RClick' );
	end
end;

// ScrollButtonClick event - Occurs when the user clicks a button in the scrollbar.
procedure TForm1.G2antt1ScrollButtonClick(ASender: TObject; ScrollBar : ScrollBarEnum;ScrollPart : ScrollPartEnum);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ScrollButtonClick' );
		OutputDebugString( ScrollBar );
		OutputDebugString( ScrollPart );
	end
end;

// SelectionChanged event - Fired after a new item has been selected.
procedure TForm1.G2antt1SelectionChanged(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'SelectionChanged' );
	end
end;

// Sort event - Fired when the control sorts a column.
procedure TForm1.G2antt1Sort(ASender: TObject; );
begin
	with G2antt1 do
	begin
		OutputDebugString( 'Sort' );
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	GridLineStyle := EXG2ANTTLib_TLB.exGridLinesHDash;
	AutoEdit := False;
	ExpandOnDblClick := False;
	with Chart do
	begin
		AllowInsideZoom := True;
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
		AllowOverviewZoom := EXG2ANTTLib_TLB.exAlwaysZoom;
		PaneWidth[False] := 128;
		FirstVisibleDate := '1/1/2001';
		DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
		GridLineStyle := Integer(EXG2ANTTLib_TLB.exGridLinesVSolid) Or Integer(EXG2ANTTLib_TLB.exGridLinesHDash);
		LevelCount := 2;
		Level[0].DrawGridLines := True;
		Bars.Item['Task'].Pattern := EXG2ANTTLib_TLB.exPatternSolid;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		Label[EXG2ANTTLib_TLB.exSecond] := '';
		Label[EXG2ANTTLib_TLB.exMinute] := '';
		Label[EXG2ANTTLib_TLB.exHour] := '';
	end;
	with Columns do
	begin
		with (IUnknown(Add('Column')) as EXG2ANTTLib_TLB.Column) do
		begin
			DisplayFilterButton := True;
			Def[EXG2ANTTLib_TLB.exCellHasCheckBox] := OleVariant(True);
			Editor.EditType := EXG2ANTTLib_TLB.EditType;
		end;
		with (IUnknown(Add('Button')) as EXG2ANTTLib_TLB.Column) do
		begin
			AllowSizing := False;
			Width := 18;
			Def[EXG2ANTTLib_TLB.exCellHasButton] := OleVariant(True);
		end;
	end;
	with Items do
	begin
		h := AddItem('parent');
		CellImage[OleVariant(h),OleVariant(0)] := 1;
		AddBar(h,'Task','1/2/2001','1/5/2001','A','<a>A</a>');
		ItemBar[h,'A',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'A',EXG2ANTTLib_TLB.exBarCanMoveToAnother] := OleVariant(True);
		ItemBar[h,'A',EXG2ANTTLib_TLB.exBarToolTip] := 'This is a bit of text that should be shown when cursor hovers the bar';
		AddBar(h,'Task','1/8/2001','1/15/2001','B','<a>B</a>');
		ItemBar[h,'B',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'B',EXG2ANTTLib_TLB.exBarCanMoveToAnother] := OleVariant(True);
		InsertItem(h,'','child');
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
1366
How can I change the chart's horizontal grid lines
with G2antt1 do
begin
	BeginUpdate();
	DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
	GridLineStyle := EXG2ANTTLib_TLB.exGridLinesHDash;
	with Chart do
	begin
		PaneWidth[False] := 48;
		FirstVisibleDate := '1/1/2001';
		DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
		GridLineStyle := Integer(EXG2ANTTLib_TLB.exGridLinesVSolid) Or Integer(EXG2ANTTLib_TLB.exGridLinesHDash);
		LevelCount := 2;
		Level[0].DrawGridLines := True;
		Bars.Item['Task'].Pattern := EXG2ANTTLib_TLB.exPatternSolid;
	end;
	Columns.Add('Column');
	with Items do
	begin
		h := AddItem('Item 1');
		AddBar(h,'Task','1/2/2001','1/5/2001','A',Null);
		AddBar(h,'Task','1/8/2001','1/15/2001','B',Null);
	end;
	EndUpdate();
end
1365
Is there any way to determine whether the ADO operations fails
// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.G2antt1AddItem(ASender: TObject; Item : HITEM);
begin
	with G2antt1 do
	begin
		with Items do
		begin
			AddBar(Item,'Task',CellValue[OleVariant(Item),OleVariant(2)],CellValue[OleVariant(Item),OleVariant(4)],Null,Null);
		end;
	end
end;

// Error event - Fired when an internal error occurs.
procedure TForm1.G2antt1Error(ASender: TObject; Error : Integer;Description : WideString);
begin
	with G2antt1 do
	begin
		OutputDebugString( Error );
		OutputDebugString( Description );
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '8/3/1994';
		PaneWidth[False] := 256;
		LevelCount := 2;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		FirstWeekDay := EXG2ANTTLib_TLB.exMonday;
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
	end;
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb',1,1,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	Items.AllowCellValueToItemBar := True;
	Columns.Item[OleVariant(2)].Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
	Columns.Item[OleVariant(4)].Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
	EndUpdate();
end
1364
Is it possible to select a column instead sorting it
// ColumnClick event - Fired after the user clicks on column's header.
procedure TForm1.G2antt1ColumnClick(ASender: TObject; Column : IColumn);
begin
	// Column.Selected = True
	with G2antt1 do
	begin
		BeginUpdate();
		Columns.Item[OleVariant(0)].Selected := False;
		Columns.Item[OleVariant(1)].Selected := False;
		Items.SelectAll();
		EndUpdate();
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	ShowFocusRect := False;
	SingleSel := False;
	FullRowSelect := EXG2ANTTLib_TLB.exRectSel;
	SortOnClick := EXG2ANTTLib_TLB.exNoSort;
	with Columns do
	begin
		Add('Column1');
		Add('Column2');
	end;
	with Items do
	begin
		CellValue[OleVariant(AddItem('One')),OleVariant(1)] := 'Three';
		CellValue[OleVariant(AddItem('Two')),OleVariant(1)] := 'Four';
		SelectAll();
	end;
	EndUpdate();
end
1363
I am using the exRectSel, and clicking the first column, has no effect, instead if I click other it works as it should
with G2antt1 do
begin
	BeginUpdate();
	SearchColumnIndex := -1;
	FullRowSelect := EXG2ANTTLib_TLB.exRectSel;
	ShowFocusRect := False;
	MarkSearchColumn := False;
	with Columns do
	begin
		Add('Column1');
		Add('Column2');
	end;
	with Items do
	begin
		CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := OleVariant(2);
		CellValue[OleVariant(AddItem(OleVariant(3))),OleVariant(1)] := OleVariant(4);
		CellValue[OleVariant(AddItem(OleVariant(5))),OleVariant(1)] := OleVariant(6);
	end;
	EndUpdate();
end
1362
Is it possible to display empty strings for 0 values
with G2antt1 do
begin
	with (IUnknown(Columns.Add('Currency')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := 'dbl(value) ? currency(dbl(value)) : ``';
		with Editor do
		begin
			EditType := EXG2ANTTLib_TLB.EditType;
			Numeric := EXG2ANTTLib_TLB.exFloat;
		end;
	end;
	with Items do
	begin
		AddItem(OleVariant(1.23));
		AddItem(OleVariant(2.34));
		AddItem(OleVariant(0));
		AddItem(OleVariant(10000.99));
	end;
end
1361
Is it possible to display empty strings for 0 values
with G2antt1 do
begin
	Columns.Add('Number');
	(IUnknown(Columns.Add('Currency')) as EXG2ANTTLib_TLB.Column).ComputedField := '%0 ? currency(%0) : ``';
	with Items do
	begin
		AddItem(OleVariant(1.23));
		AddItem(OleVariant(2.34));
		AddItem(OleVariant(0));
		AddItem(OleVariant(10000.99));
	end;
end
1360
How can I hide a date from the chart view, when I display hours instead days

with G2antt1 do
begin
	BeginUpdate();
	HeaderHeight := 32;
	with Chart do
	begin
		FirstVisibleDate := '6/8/2011';
		AdjustLevelsToBase := True;
		PaneWidth[False] := 0;
		LevelCount := 2;
		AllowInsideZoom := True;
		with Level[0] do
		begin
			Alignment := EXG2ANTTLib_TLB.CenterAlignment;
			Label := '<b><%d%>-<%mmm%>-<%yyyy%>';
			Unit := EXG2ANTTLib_TLB.exDay;
		end;
		with Level[1] do
		begin
			Label := '<%h%>';
			Count := 8;
			Unit := EXG2ANTTLib_TLB.exHour;
			FormatLabel := 'date(int(dvalue)) case (#06/08/2011# : (int(value) case ( 0 : ''Shift <b>1</b><br>23/20''; 8 : ''Shift <b>2</b><br>38/30'' ; 16 : ''S' + 
	'hift <b>3</b><br>24/24'' ) ) ; #06/09/2011# : (int(value) case ( 0 : ''Shift <b>1</b><br>15/20''; 8 : ''Shift <b>2</b><br>30/32'' ; 1' + 
	'6 : ''Shift <b>3</b><br>26/24'' ) ) )';
		end;
		UnitWidth := 64;
		NonworkingDays := 0;
		AllowInsideZoom := True;
		DefaultInsideZoomFormat.InsideUnit := EXG2ANTTLib_TLB.exMinute;
		AllowResizeInsideZoom := False;
		InsideZoomOnDblClick := False;
		with InsideZooms do
		begin
			SplitBaseLevel := False;
			DefaultWidth := 0;
		end;
		with InsideZooms do
		begin
			Add('6/9/2011 8:00:00 AM');
			Add('6/9/2011 4:00:00 PM');
		end;
	end;
	EndUpdate();
end
1359
I’ve created a skin (EBN) for the bars of my chart, with rounded top corners. The problem, is that these rounded corners are applied also at beginning and the end of the non working units. Is it possible to show a different picture/skin for the non-working part of the bars

with G2antt1 do
begin
	BeginUpdate();
	VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn');
	VisualAppearance.Add(2,'c:\exontrol\images\pushed.ebn');
	Columns.Add('Task');
	Chart.PaneWidth[False] := 128;
	with Chart.Bars do
	begin
		Item['Task'].Color := $1000000;
		Item['Split'].Color := $2000000;
		Add('Task:Split').Shortcut := 'TS';
	end;
	Chart.FirstVisibleDate := '1/1/2001';
	with Items do
	begin
		AddBar(AddItem('Task'),'TS','1/2/2001','1/16/2001',Null,Null);
	end;
	EndUpdate();
end
1358
How do I display the names of the tasks on bars but not in the middle of the bar (left or right)

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		FirstVisibleDate := '12/27/2000';
		PaneWidth[False] := 128;
		with Bars.Item['Task'] do
		begin
			Pattern := EXG2ANTTLib_TLB.exPatternDot;
			Height := 15;
		end;
	end;
	with Items do
	begin
		h := AddItem('Task 1');
		AddBar(h,'Task','1/3/2001','1/8/2001','K1','<b>to do</b> ');
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(2);
		h := AddItem('Task 2');
		AddBar(h,'Task','1/3/2001','1/8/2001','K2','<b>to do</b>');
		ItemBar[h,'K2',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		h := AddItem('Task 3');
		AddBar(h,'Task','1/3/2001','1/8/2001','K1',' <b>to do</b>');
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(0);
		h := AddItem('Task 4');
		AddBar(h,'Task','1/3/2001','1/8/2001','K2','<b>to do</b>');
		ItemBar[h,'K2',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(16);
	end;
	EndUpdate();
end
1357
How can I get the list of items as they are displayed
with G2antt1 do
begin
	BeginUpdate();
	BackColorAlternate := RGB(240,240,240);
	Columns.Add('Names');
	with Items do
	begin
		AddItem('Mantel');
		AddItem('Mechanik');
		AddItem('Motor');
		AddItem('Murks');
		AddItem('Märchen');
		AddItem('Möhren');
		AddItem('Mühle');
	end;
	Columns.Item[OleVariant(0)].SortOrder := EXG2ANTTLib_TLB.SortAscending;
	EndUpdate();
	OutputDebugString( GetItems(OleVariant(1)) );
end
1356
How can I disable the left and right arrows to move to next cell while editing
with G2antt1 do
begin
	var_Editor := (IUnknown(Columns.Add('Edit')) as EXG2ANTTLib_TLB.Column).Editor;
	with var_Editor do
	begin
		EditType := EXG2ANTTLib_TLB.EditType;
		Option[EXG2ANTTLib_TLB.exLeftArrow] := OleVariant(0);
		Option[EXG2ANTTLib_TLB.exRightArrow] := OleVariant(0);
	end;
	with Items do
	begin
		AddItem('Cell 1');
		AddItem('Cell 2');
		AddItem('Cell 3');
	end;
end
1355
Is it possible to define a bar that is treated as a non-working hour so user can move it at runtime

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		LevelCount := 2;
		PaneWidth[False] := 48;
		AllowNonworkingBars := True;
		Bars.Add('Task:Split').Shortcut := 'Task';
		UnitScale := EXG2ANTTLib_TLB.exHour;
		Level[1].Label := '<font ;4><%hh%>';
		UnitWidth := 12;
		NonworkingDaysPattern := EXG2ANTTLib_TLB.exPatternBDiagonal;
		NonworkingDays := 0;
	end;
	Columns.Add('Tasks');
	with Items do
	begin
		h := AddItem('Machine');
		ItemNonworkingUnits[h,OleVariant(False)] := '0';
		AddBar(h,'','1/1/2001 9:00:00 AM','1/1/2001 11:00:00 AM','A','pause');
		ItemBar[h,'A',EXG2ANTTLib_TLB.exBarTreatAsNonworking] := OleVariant(True);
		AddBar(h,'Task','1/1/2001 12:00:00 PM','1/1/2001 5:00:00 PM','Z',Null);
		ItemBar[h,'Z',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
	end;
	EndUpdate();
end
1354
Is it possible to customize the chart's header so I can display shift and other values

with G2antt1 do
begin
	BeginUpdate();
	HeaderHeight := 32;
	with Chart do
	begin
		FirstVisibleDate := '6/8/2011';
		AdjustLevelsToBase := True;
		PaneWidth[False] := 0;
		LevelCount := 2;
		with Level[0] do
		begin
			Alignment := EXG2ANTTLib_TLB.CenterAlignment;
			Label := '<b><%d%> - <%mmmm%> - <%yyyy%>';
			Unit := EXG2ANTTLib_TLB.exDay;
		end;
		with Level[1] do
		begin
			Label := '<%h%>';
			Count := 8;
			Unit := EXG2ANTTLib_TLB.exHour;
			FormatLabel := 'date(int(dvalue)) case (#06/08/2011# : (int(value) case ( 0 : ''Shift <b>1</b><br>23/20''; 8 : ''Shift <b>2</b><br>38/30'' ; 16 : ''S' + 
	'hift <b>3</b><br>24/24'' ) ) ; #06/09/2011# : (int(value) case ( 0 : ''Shift <b>1</b><br>15/20''; 8 : ''Shift <b>2</b><br>30/32'' ; 1' + 
	'6 : ''Shift <b>3</b><br>26/24'' ) ) )';
		end;
		UnitWidth := 64;
		NonworkingDays := 0;
	end;
	EndUpdate();
end
1353
How can I change both start and end dates of the bar
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Tasks');
	with Chart do
	begin
		PaneWidth[False] := 64;
		FirstVisibleDate := '6/19/2005';
	end;
	with Items do
	begin
		h := AddItem('Test');
		AddBar(h,'Task','6/22/2005','6/27/2005','t1',Null);
		AddBar(h,ItemBar[h,'t1',EXG2ANTTLib_TLB.exBarName],'6/21/2005','6/22/2005','t1',Null);
	end;
	EndUpdate();
end
1352
Is it possible to add new rows, as I type like in Excel
// EditClose event - Occurs when the edit operation ends.
procedure TForm1.G2antt1EditClose(ASender: TObject; );
begin
	with G2antt1 do
	begin
		Items.AddItem('');
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	AutoEdit := True;
	(IUnknown(Columns.Add('Default')) as EXG2ANTTLib_TLB.Column).Editor.EditType := EXG2ANTTLib_TLB.EditType;
	FullRowSelect := EXG2ANTTLib_TLB.exColumnSel;
	Items.AddItem('');
	DrawGridLines := EXG2ANTTLib_TLB.exAllLines;
	ScrollBars := EXG2ANTTLib_TLB.exDisableBoth;
	EndUpdate();
end
1351
How do I load bars from my table/database
// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.G2antt1AddItem(ASender: TObject; Item : HITEM);
begin
	with G2antt1 do
	begin
		with Items do
		begin
			AddBar(Item,'Task',CellValue[OleVariant(Item),OleVariant(2)],CellValue[OleVariant(Item),OleVariant(4)],Null,Null);
		end;
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '8/3/1994';
		PaneWidth[False] := 256;
		LevelCount := 2;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		FirstWeekDay := EXG2ANTTLib_TLB.exMonday;
		OverviewVisible := EXG2ANTTLib_TLB.exOverviewShowAllVisible;
	end;
	ColumnAutoResize := False;
	ContinueColumnScroll := False;
	rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
	with rs do
	begin
		Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExG2antt\Sample\Access\misc.accdb',3,3,Null);
	end;
	DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
	Items.AllowCellValueToItemBar := True;
	Columns.Item[OleVariant(2)].Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
	Columns.Item[OleVariant(4)].Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
	EndUpdate();
end
1350
Is posible to reduce the size of the picture to be shown in the bar's caption

with G2antt1 do
begin
	BeginUpdate();
	HTMLPicture['pic1'] := 'c:\exontrol\images\zipdisk.gif';
	Columns.Add('Task');
	ScrollBySingleLine := True;
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 78;
	end;
	with Items do
	begin
		h := AddItem('Default-Size');
		ItemHeight[h] := 48;
		AddBar(h,'Task','1/2/2001','1/6/2001','K1','<img>pic1</img>');
		h := AddItem('Custom-Size');
		AddBar(h,'Task','1/2/2001','1/6/2001','K2','<img>pic1:18</img>');
	end;
	EndUpdate();
end
1349
Is posible to reduce the size of the picture to be shown in the column's caption
with G2antt1 do
begin
	BeginUpdate();
	HTMLPicture['pic1'] := 'c:\exontrol\images\zipdisk.gif';
	HeaderHeight := 48;
	(IUnknown(Columns.Add('DefaultSize')) as EXG2ANTTLib_TLB.Column).HTMLCaption := 'Default-Size <img>pic1</img> Picture';
	(IUnknown(Columns.Add('CustomSize')) as EXG2ANTTLib_TLB.Column).HTMLCaption := 'Custom-Size <img>pic1:16</img> Picture';
	EndUpdate();
end
1348
Is it possible to display the selected dates using a solid color instead vertical lines

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		PaneWidth[False] := 128;
		FirstVisibleDate := '1/1/2008';
		MarkTodayColor := BackColor;
		LevelCount := 2;
		MarkSelectDateColor := $7fcbc0ff;
		SelectLevel := 1;
		SelectDate['1/8/2008'] := True;
		SelectDate['1/9/2008'] := True;
		SelectDate['1/10/2008'] := True;
	end;
	DefaultItemHeight := 72;
	Columns.Add('Default');
	with Items do
	begin
		AddBar(AddItem(''),'','1/7/2008','1/12/2008','','<b>MarkSelectDateColor(32)</b><br>should be <font ;11><i>0x7F000000 + RGB(rr,gg,bb)</i></font><br> or in the format as: <font ;1' + 
	'1><i>0x7FBBGGRR</i></font>, <br>where BB is the hexa value for Blue, <br>GG for grean and so on.');
	end;
	EndUpdate();
end
1347
How can I show the cells using a different background color based on the condition I have
with G2antt1 do
begin
	BeginUpdate();
	SelBackMode := EXG2ANTTLib_TLB.exTransparent;
	ShowFocusRect := False;
	with ConditionalFormats do
	begin
		with Add('dbl(%1)-dbl(%0) = 1',Null) do
		begin
			BackColor := $ff;
			ApplyTo := EXG2ANTTLib_TLB.FormatApplyToEnum($1);
		end;
		with Add('dbl(%0)-dbl(%1) = 3',Null) do
		begin
			BackColor := $ffff;
			ApplyTo := EXG2ANTTLib_TLB.exFormatToColumns;
		end;
		with Add('dbl(%1)-dbl(%0) = 4',Null) do
		begin
			ForeColor := $808080;
			Bold := True;
			ApplyTo := EXG2ANTTLib_TLB.exFormatToItems;
		end;
	end;
	with Columns do
	begin
		(IUnknown(Add('C1')) as EXG2ANTTLib_TLB.Column).Width := 8;
		(IUnknown(Add('C2')) as EXG2ANTTLib_TLB.Column).Width := 8;
		Add('');
	end;
	Chart.PaneWidth[True] := 0;
	with Items do
	begin
		CellValue[OleVariant(AddItem(OleVariant(2))),OleVariant(1)] := OleVariant(3);
		CellValue[OleVariant(AddItem(OleVariant(5))),OleVariant(1)] := OleVariant(2);
		CellValue[OleVariant(AddItem(OleVariant(5))),OleVariant(1)] := OleVariant(6);
		CellValue[OleVariant(AddItem(OleVariant(2))),OleVariant(1)] := OleVariant(6);
	end;
	EndUpdate();
end
1346
How can I specify the frame's color for all Task bars

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 128;
		Bars.Item['Task'].Def[EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(255);
	end;
	with Items do
	begin
		AddBar(AddItem('Task 1'),'Task','1/2/2001','1/5/2001','K1',Null);
		AddBar(AddItem('Task 2'),'Task','1/2/2001','1/5/2001','K2',Null);
		AddBar(AddItem('Task 3'),'Task','1/2/2001','1/5/2001','K3',Null);
	end;
	EndUpdate();
end
1345
Is it possible to change the bar's frame color

with G2antt1 do
begin
	BeginUpdate();
	DefaultItemHeight := 25;
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 128;
		DrawGridLines := EXG2ANTTLib_TLB.exHLines;
		NonworkingDays := 0;
		Bars.Item['Task'].Height := 15;
	end;
	with Items do
	begin
		h := AddItem('Default');
		AddBar(h,'Task','1/2/2001','1/5/2001','K1',Null);
		h := AddItem('Red-Frame');
		AddBar(h,'Task','1/3/2001','1/6/2001','K1',Null);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(255);
		h := AddItem('Green-ThickFrame');
		AddBar(h,'Task','1/4/2001','1/7/2001','K1',Null);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarPattern] := OleVariant(4099);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(32768);
		h := AddItem('Red-ThickFrame/Shadow');
		AddBar(h,'Task','1/5/2001','1/8/2001','K1',Null);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarPattern] := OleVariant(12291);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(255);
	end;
	EndUpdate();
end
1344
I need to customize the labels on the chart. Is it possible

with G2antt1 do
begin
	BeginUpdate();
	HeaderHeight := 32;
	with Chart do
	begin
		FirstVisibleDate := '7/1/2011';
		AdjustLevelsToBase := True;
		PaneWidth[False] := 0;
		LevelCount := 2;
		with Level[0] do
		begin
			Alignment := EXG2ANTTLib_TLB.CenterAlignment;
			Label := '<b><%d%> - <%mmmm%> - <%yyyy%>';
			Unit := EXG2ANTTLib_TLB.exDay;
		end;
		with Level[1] do
		begin
			Label := '<%h%>';
			Count := 8;
			Unit := EXG2ANTTLib_TLB.exHour;
			FormatLabel := 'int(value) case ( 0 : ''Shift <b>1</b><br><font ;11>'' + yearday(dvalue) + ''</font>/365 '' ; 8 : ''Shift <b>2</b><br>'' + weekday(dva' + 
	'lue) + ''/20''; 16 : ''Shift <b>3</b><br>'' + (weekday(dvalue) case ( 0 : ''12/22''; 1 : ''12/23''; 2 : ''2/3''; 3 : ''12/13''; 4 : ''22/34'' ' + 
	'; 5 : ''102-<fgcolor=FF0000><b>31</b></bgcolor>''; 6 : ''1/1'' ) )  ) ';
		end;
		UnitWidth := 64;
		NonworkingDays := 0;
	end;
	EndUpdate();
end
1343
Is it possible to show a frame around the bar

with G2antt1 do
begin
	BeginUpdate();
	DefaultItemHeight := 25;
	with VisualAppearance do
	begin
		Add(1,'gBFLBCJwBAEHhEJAEGg4BOUMQAAYAQGKIYBkAKBQAGaAoDDYMgzQwAAxDELMEwsACEIrjKCVIgkHYJRjGEZxMAsEwjAoaQChEZRUhEMgxDDIIyAJIcaw0GSEZwgOQZBi' + 
	'OEYnDANkIYJDSIYHTZIUzTJAdGSVJKNKAoKCaEgORo5SpNUghBDYKQTJyeagkaaRVCWLplRCNIwWNJdVwjEaQaaiarKNqKNpSViAEqSdKEZRLOyRZyiKQMEreY4EUDQc' + 
	'xUPYMNYaAC6AAparpbwCFpSYpRND3TaEE4jSLKAA0HD6QqebIDDJaFq6PbVXSTOLPNhgPQcWxeVJBXjLExUALGSYLC6nKayHZcHACKK5VbVW6ZZDdNy/BLQeD4QANG4r' + 
	'iuNJriMV4dgWVgHh+ZpgCeEIQEQJIgGkMYdA6JwjC0VAAmaJgQgmPp4lCWgSCiaB+DKIYIjqQpllMf6JgYAoAmASAWAaAZggQDJ/gKYJIDYDoDmECBGAOBBhEgVgUgSY' + 
	'RoGYGYGCGKB2BCBwhmiBgLggIgoHoJIJGGKIeCiBYiiiLgXgCIpohoMIMGKGJODSCwghiZg6g6Y5InYPh/lAECAg');
		Add(2,'CP:1 2 2 -2 -2');
		Add(3,'CP:1 -5 -5 5 5');
		Add(4,'XP:Window 19 1');
		Add(5,'XP:TreeView 2 1');
	end;
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 128;
		DrawGridLines := EXG2ANTTLib_TLB.exHLines;
	end;
	with Items do
	begin
		h := AddItem('Default');
		AddBar(h,'Task','1/2/2001','1/5/2001','K1',Null);
		h := AddItem('Red-Frame');
		AddBar(h,'Task','1/3/2001','1/6/2001','K1',Null);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(255);
		h := AddItem('Green-ThickFrame');
		AddBar(h,'Task','1/4/2001','1/7/2001','K1',Null);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarPattern] := OleVariant(4099);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(32768);
		h := AddItem('Red-ThickFrame/Shadow');
		AddBar(h,'Task','1/4/2001','1/7/2001','K1',Null);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarPattern] := OleVariant(12291);
		ItemBar[h,'K1',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(255);
		h := AddItem('EBN-Frame-Border');
		AddBar(h,'Task','1/5/2001','1/9/2001','K2',Null);
		ItemBar[h,'K2',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(16777216);
		h := AddItem('EBN-Inside Frame');
		AddBar(h,'Task','1/9/2001','1/13/2001','K3',Null);
		ItemBar[h,'K3',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(33554432);
		h := AddItem('EBN-Outside Frame');
		AddBar(h,'Task','1/15/2001','1/18/2001','K4',Null);
		ItemBar[h,'K4',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(50331648);
		h := AddItem('EBN-XP Close Button');
		AddBar(h,'Task','1/15/2001','1/18/2001','K5',Null);
		ItemBar[h,'K5',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(67108864);
		h := AddItem('EBN-XP TreeView Glyph');
		AddBar(h,'Task','1/15/2001','1/18/2001','K6',Null);
		ItemBar[h,'K6',EXG2ANTTLib_TLB.exBarFrameColor] := OleVariant(83886080);
	end;
	EndUpdate();
end
1342
Currently your control, provides customization up to Year,Month,Day,Hours,etc. I would like to add Shifts in a day. Shortly, I need to customize the chart's header. Is it possible

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		FirstVisibleDate := '7/1/2011';
		AdjustLevelsToBase := True;
		PaneWidth[False] := 0;
		LevelCount := 2;
		with Level[0] do
		begin
			Alignment := EXG2ANTTLib_TLB.CenterAlignment;
			Label := '<b><%d%> - <%mmmm%> - <%yyyy%>';
			Unit := EXG2ANTTLib_TLB.exDay;
		end;
		with Level[1] do
		begin
			Label := '<%h%>';
			Count := 8;
			Unit := EXG2ANTTLib_TLB.exHour;
			ReplaceLabel[0] := ' Shift 1';
			ReplaceLabel[8] := ' Shift 2';
			ReplaceLabel[16] := ' Shift 3';
		end;
		UnitWidth := 48;
		NonworkingDays := 0;
	end;
	EndUpdate();
end
1341
The exbartootip shows dates after you moved or resized the bar. My question is during the move or resizing of bar(you click on bar and drag it,during that time) , can we display the new dates simultaneously so we will know where we want to move or resize the bar to

with G2antt1 do
begin
	Columns.Add('Task');
	with Chart do
	begin
		PaneWidth[False] := 64;
		FirstVisibleDate := '1/1/2001';
		DrawDateTicker := True;
		DateTickerLabel := '<%mmm%> <%d%><br><b><%yyyy%>';
	end;
	with Items do
	begin
		h := AddItem('Tasks A');
		AddBar(h,'Task','1/2/2001','1/4/2001','K1',Null);
		AddBar(h,'Task','1/5/2001','1/9/2001','K2',Null);
		SelectableItem[AddItem(Null)] := False;
		h := AddItem('Tasks B');
		AddBar(h,'Task','1/3/2001','1/5/2001','K1',Null);
		AddBar(h,'Task','1/8/2001','1/11/2001','K2',Null);
	end;
end
1340
Is it possible to assign a tooltip automatically to all bars, so it can display the start and end, without specifying the IexBarToolTip for each bar
with G2antt1 do
begin
	Columns.Add('Task');
	with Chart do
	begin
		PaneWidth[False] := 64;
		FirstVisibleDate := '1/1/2001';
		Bars.Item['Task'].Def[EXG2ANTTLib_TLB.exBarToolTip] := '<b><%=%9 + ''/'' + %C0%></b><br><upline><dotline>Start: <%=%1%><br>End: <%=%2%><br>Duration: <%=(%2-%1)%><br>Working: <%=%258%>';
	end;
	with Items do
	begin
		h := AddItem('Tasks A');
		AddBar(h,'Task','1/2/2001','1/4/2001','K1',Null);
		AddBar(h,'Task','1/5/2001','1/9/2001','K2',Null);
		h := AddItem('Tasks B');
		AddBar(h,'Task','1/3/2001','1/5/2001','K1',Null);
		AddBar(h,'Task','1/8/2001','1/11/2001','K2',Null);
	end;
end
1339
How can I change the color, font, bold etc for the items/cells in the same column or for the entire column
with G2antt1 do
begin
	BeginUpdate();
	with ConditionalFormats.Add('1',Null) do
	begin
		Bold := True;
		ForeColor := $ff;
		ApplyTo := EXG2ANTTLib_TLB.FormatApplyToEnum($1);
	end;
	Columns.Add('C1');
	with (IUnknown(Columns.Add('C2')) as EXG2ANTTLib_TLB.Column) do
	begin
		HeaderBold := True;
		HTMLCaption := '<fgcolor=FF0000>C2';
	end;
	with Items do
	begin
		CellValue[OleVariant(AddItem(OleVariant(10))),OleVariant(1)] := OleVariant(11);
		CellValue[OleVariant(AddItem(OleVariant(12))),OleVariant(1)] := OleVariant(13);
	end;
	EndUpdate();
end
1338
How can I remove a date-time zone

// Click event - Occurs when the user presses and then releases the left mouse button over the tree control.
procedure TForm1.G2antt1Click(ASender: TObject; );
begin
	with G2antt1 do
	begin
		Chart.RemoveTimeZone('Z1');
	end
end;

with G2antt1 do
begin
	with Chart do
	begin
		PaneWidth[False] := 18;
		LevelCount := 2;
		FirstVisibleDate := '1/1/2010';
		MarkTimeZone('Z1','1/4/2010','1/8/2010',OleVariant(16744544),Null);
	end;
end
1337
How can I filter the check-boxes (method 2)
with G2antt1 do
begin
	with (IUnknown(Columns.Add('Check')) as EXG2ANTTLib_TLB.Column) do
	begin
		with Editor do
		begin
			EditType := EXG2ANTTLib_TLB.CheckValueType;
			Option[EXG2ANTTLib_TLB.exCheckValue2] := OleVariant(1);
		end;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		CustomFilter := 'checked||-1|||unchecked||0';
	end;
	with Items do
	begin
		AddItem(OleVariant(True));
		AddItem(OleVariant(True));
		AddItem(OleVariant(False));
		AddItem(OleVariant(True));
		AddItem(OleVariant(False));
		AddItem(OleVariant(True));
		AddItem(OleVariant(False));
	end;
end
1336
How can I filter the check-boxes (method 1)
with G2antt1 do
begin
	with (IUnknown(Columns.Add('Check')) as EXG2ANTTLib_TLB.Column) do
	begin
		with Editor do
		begin
			EditType := EXG2ANTTLib_TLB.CheckValueType;
			Option[EXG2ANTTLib_TLB.exCheckValue2] := OleVariant(1);
		end;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterType := EXG2ANTTLib_TLB.exCheck;
	end;
	with Items do
	begin
		AddItem(OleVariant(True));
		AddItem(OleVariant(True));
		AddItem(OleVariant(False));
		AddItem(OleVariant(True));
		AddItem(OleVariant(False));
		AddItem(OleVariant(True));
		AddItem(OleVariant(False));
	end;
end
1335
How can add a button to control

// ButtonClick event - Occurs when user clicks on the cell's button.
procedure TForm1.G2antt1ButtonClick(ASender: TObject; Item : HITEM;ColIndex : Integer;Key : OleVariant);
begin
	with G2antt1 do
	begin
		OutputDebugString( 'ButtonClick' );
		OutputDebugString( Items.CellCaption[OleVariant(Item),OleVariant(ColIndex)] );
		OutputDebugString( Key );
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	DefaultItemHeight := 22;
	HeaderHeight := 22;
	Appearance := EXG2ANTTLib_TLB.None2;
	DrawGridLines := EXG2ANTTLib_TLB.exRowLines;
	ScrollBySingleLine := False;
	Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' + 
	'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' + 
	'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' + 
	'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
	HTMLPicture['pic1'] := 'c:\exontrol\images\auction.gif';
	Chart.PaneWidth[True] := 0;
	with Columns do
	begin
		with (IUnknown(Add('Type')) as EXG2ANTTLib_TLB.Column) do
		begin
			Width := 48;
			Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
		end;
		with (IUnknown(Add('Appearance')) as EXG2ANTTLib_TLB.Column) do
		begin
			Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
			Alignment := EXG2ANTTLib_TLB.CenterAlignment;
			HeaderAlignment := EXG2ANTTLib_TLB.CenterAlignment;
		end;
	end;
	with Items do
	begin
		h := AddItem('Items.<b>CellHasButton</b> property');
		CellValue[OleVariant(h),OleVariant(1)] := 'Button <b>1</b>';
		CellHasButton[OleVariant(h),OleVariant(1)] := True;
		h := AddItem('Items.<b>CellButtonAutoWidth</b> property');
		CellValue[OleVariant(h),OleVariant(1)] := ' Button <b>2</b> ';
		CellHasButton[OleVariant(h),OleVariant(1)] := True;
		CellButtonAutoWidth[OleVariant(h),OleVariant(1)] := True;
		h := AddItem('Items.<b>CellHasButton</b> property');
		CellValue[OleVariant(h),OleVariant(1)] := ' <img>2</img>Button <b>3</b> ';
		CellHasButton[OleVariant(h),OleVariant(1)] := True;
		CellButtonAutoWidth[OleVariant(h),OleVariant(1)] := True;
		h := AddItem('Items.<b>CellHasButton</b> property');
		ItemHeight[h] := 32;
		CellValue[OleVariant(h),OleVariant(1)] := ' <img>2</img>Button <b>4</b> <img>pic1</img> ';
		CellHasButton[OleVariant(h),OleVariant(1)] := True;
		CellButtonAutoWidth[OleVariant(h),OleVariant(1)] := True;
		h := AddItem('Items.<b>CellHasButton</b> in splitted cells');
		CellValue[OleVariant(h),OleVariant(1)] := ' Button <b>5.1</b> ';
		CellHasButton[OleVariant(h),OleVariant(1)] := True;
		CellButtonAutoWidth[OleVariant(h),OleVariant(1)] := True;
		s := SplitCell[OleVariant(h),OleVariant(1)];
		CellValue[OleVariant(0),OleVariant(s)] := ' Button <b>5.2</b> ';
		CellHasButton[OleVariant(0),OleVariant(s)] := True;
		CellButtonAutoWidth[OleVariant(0),OleVariant(s)] := True;
		h := AddItem('Column.<b>Editor</b>, Items.<b>CellEditor</b>');
		CellValue[OleVariant(h),OleVariant(1)] := 'Visible when clicking the cell';
		with CellEditor[OleVariant(h),OleVariant(1)] do
		begin
			EditType := EXG2ANTTLib_TLB.EditType;
			AddButton('B1',OleVariant(1),OleVariant(0),'This is a bit of text that''s shown when the cursor hovers the button B1',Null,Null);
			AddButton('B3',OleVariant(2),OleVariant(1),'This is a bit of text that''s shown when the cursor hovers the button B3',Null,Null);
			AddButton('B4',OleVariant(1),OleVariant(1),'This is a bit of text that''s shown when the cursor hovers the button B4',Null,Null);
			ButtonWidth := 24;
		end;
		h := AddItem('Column.<b>Editor</b>, Items.<b>CellEditor</b>');
		CellValue[OleVariant(h),OleVariant(1)] := OleVariant(3);
		with CellEditor[OleVariant(h),OleVariant(1)] do
		begin
			EditType := EXG2ANTTLib_TLB.CheckListType;
			AddItem(1,'Flag 1',Null);
			AddItem(2,'Flag 2',Null);
			AddItem(4,'Flag 4',Null);
			AddItem(8,'Flag 8',Null);
			AddButton('C1',OleVariant(1),OleVariant(0),'This is a bit of text that''s shown when the cursor hovers the button C1',Null,Null);
			AddButton('C3',OleVariant(2),OleVariant(0),'This is a bit of text that''s shown when the cursor hovers the button C2',Null,Null);
			AddButton('C4',OleVariant(1),OleVariant(0),'This is a bit of text that''s shown when the cursor hovers the button C3',Null,Null);
			ButtonWidth := 24;
		end;
	end;
	EndUpdate();
end
1334
Is it posible to store additional values against each item, cell, bar, link, such as custom values such string / numbers etc
with G2antt1 do
begin
	with Chart do
	begin
		LevelCount := 2;
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 96;
	end;
	(IUnknown(Columns.Add('Column')) as EXG2ANTTLib_TLB.Column).Data := 'Extra_Data_Column';
	with Items do
	begin
		h := AddItem('Item 1');
		ItemData[h] := 'Extra_Data_Item 1';
		CellData[OleVariant(h),OleVariant(0)] := 'Extra_Data_Item 1_Cell_0';
		AddBar(h,'Task','1/2/2001','1/4/2001','B1',Null);
		ItemBar[h,'B1',EXG2ANTTLib_TLB.exBarData] := 'Extra_B1_Data';
		h := AddItem('Item 2');
		ItemData[h] := 'Extra_Data_Item 2';
		AddBar(h,'Task','1/6/2001','1/10/2001','B2',Null);
		ItemBar[h,'B2',EXG2ANTTLib_TLB.exBarData] := 'Extra_B2_Data';
		AddLink('L1',FindItem['Item 1',OleVariant(0),Null],'B1',FindItem['Item 2',OleVariant(0),Null],'B2');
		Link['L1',EXG2ANTTLib_TLB.exLinkUserData] := 'Extra_Link_Data';
	end;
end
1333
How do I set the parent item to show the total number of days for its children and also the minimum and maximum dates for its children

with G2antt1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	Indent := 11;
	HasLines := EXG2ANTTLib_TLB.exSolidLine;
	Items.AllowCellValueToItemBar := True;
	with Columns do
	begin
		Add('Tasks');
		(IUnknown(Add('Start')) as EXG2ANTTLib_TLB.Column).Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(1);
		(IUnknown(Add('End')) as EXG2ANTTLib_TLB.Column).Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(2);
		(IUnknown(Add('Duration')) as EXG2ANTTLib_TLB.Column).Def[EXG2ANTTLib_TLB.exCellValueToItemBarProperty] := OleVariant(513);
	end;
	with Chart do
	begin
		ShowNonworkingDates := False;
		FirstVisibleDate := '9/20/2006';
		AllowLinkBars := False;
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		LevelCount := 2;
		PaneWidth[False] := 220;
	end;
	with Items do
	begin
		h := AddItem('Project');
		AddBar(h,'Summary','9/21/2006','10/3/2006',Null,Null);
		h1 := InsertItem(h,Null,'Task 1');
		AddBar(h1,'Task','9/21/2006','9/24/2006',Null,Null);
		h2 := InsertItem(h,Null,'Task 2');
		AddBar(h2,'Task','9/24/2006','9/28/2006',Null,Null);
		h3 := InsertItem(h,Null,'Task 3');
		AddBar(h3,'Task','9/28/2006','10/3/2006',Null,Null);
		DefineSummaryBars(h,'',h1,'');
		DefineSummaryBars(h,'',h2,'');
		DefineSummaryBars(h,'',h3,'');
		ExpandItem[h] := True;
		ItemBold[h] := True;
	end;
	EndUpdate();
end
1332
Is it possible to specify the distance between 2 bars to be at least 2 working days

// BarResizing event - Occurs when a bar is moving or resizing.
procedure TForm1.G2antt1BarResizing(ASender: TObject; Item : HITEM;Key : OleVariant);
begin
	with G2antt1 do
	begin
		Items.SchedulePDM(Item,OleVariant(Key));
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	DefaultItemHeight := 24;
	AntiAliasing := True;
	Columns.Add('Task');
	with Chart do
	begin
		LevelCount := 2;
		with Bars.Add('Task:Split') do
		begin
			Shortcut := 'Task';
			Color := $0;
			Height := 17;
			Pattern := EXG2ANTTLib_TLB.exPatternFrameShadow;
		end;
		FirstVisibleDate := '1/3/2001';
		PaneWidth[False] := 48;
		LinksWidth := 2;
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		AllowLinkBars := False;
		FirstWeekDay := EXG2ANTTLib_TLB.exMonday;
		NonworkingDaysPattern := EXG2ANTTLib_TLB.exPatternBDiagonal;
	end;
	with Items do
	begin
		h1 := AddItem('Task 1');
		AddBar(h1,'Task','1/4/2001','1/6/2001','K1',Null);
		ItemBar[h1,'K1',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
		h2 := AddItem('Task 2');
		AddBar(h2,'Task','1/2/2001','1/5/2001','K2',Null);
		ItemBar[h2,'K2',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
		AddLink('L1',h1,'K1',h2,'K2');
		Link['L1',EXG2ANTTLib_TLB.exLinkShowRound] := OleVariant(-1);
		Link['L1',EXG2ANTTLib_TLB.exLinkColor] := OleVariant(8421504);
		h3 := AddItem('Task 3');
		AddBar(h3,'Task','1/2/2001','1/6/2001','K3',Null);
		ItemBar[h3,'K3',EXG2ANTTLib_TLB.exBarKeepWorkingCount] := OleVariant(True);
		AddLink('L2',h2,'K2',h3,'K3');
		Link['L2',EXG2ANTTLib_TLB.exLinkText] := '<br><br><br><br>This link <u>delays</u> the bars<br>with <b>2</b> working days';
		Link['L2',EXG2ANTTLib_TLB.exLinkPDMWorkingDelay] := OleVariant(2);
		Link['L2',EXG2ANTTLib_TLB.exLinkShowRound] := OleVariant(-1);
		SchedulePDM(0,'K1');
	end;
	EndUpdate();
end
1331
The item is not getting selected when clicking the cell's checkbox. What should I do
// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.G2antt1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
	with G2antt1 do
	begin
		Items.SelectItem[Item] := True;
	end
end;

with G2antt1 do
begin
	(IUnknown(Columns.Add('Check')) as EXG2ANTTLib_TLB.Column).Def[EXG2ANTTLib_TLB.exCellHasCheckBox] := OleVariant(True);
	with Items do
	begin
		AddItem(OleVariant(0));
		AddItem(OleVariant(1));
		AddItem(OleVariant(2));
		AddItem(OleVariant(3));
	end;
end
1330
How can I add a summary item as a child or subitem of another one

with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		PaneWidth[False] := 96;
		FirstVisibleDate := '1/1/2011';
		LevelCount := 2;
	end;
	Columns.Add('Default');
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with Items do
	begin
		hSummary := AddItem('Project');
		AddBar(hSummary,'Summary','1/1/2011','1/1/2011','Sum',Null);
		hChild := InsertItem(hSummary,OleVariant(0),'Task 1');
		AddBar(hChild,'Task','1/2/2011','1/4/2011','Task1',Null);
		DefineSummaryBars(hSummary,'Sum',hChild,'Task1');
		hChild := InsertItem(hSummary,OleVariant(0),'Task 2');
		AddBar(hChild,'Task','1/4/2011','1/6/2011','Task2',Null);
		DefineSummaryBars(hSummary,'Sum',hChild,'Task2');
		hChild := InsertItem(hSummary,OleVariant(0),'Task 3');
		AddBar(hChild,'Task','1/6/2011','1/8/2011','Task3',Null);
		DefineSummaryBars(hSummary,'Sum',hChild,'Task3');
		ExpandItem[hSummary] := True;
	end;
	EndUpdate();
end
1329
How can I make an item a subitem of another one
with G2antt1 do
begin
	BeginUpdate();
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	Chart.PaneWidth[True] := 0;
	Columns.Add('Default');
	with Items do
	begin
		hSummary := AddItem('Project');
		hChild := InsertItem(hSummary,OleVariant(0),'Task 1');
		hChild := InsertItem(hSummary,OleVariant(0),'Task 2');
		hChild := InsertItem(hSummary,OleVariant(0),'Task 3');
		ExpandItem[hSummary] := True;
	end;
	EndUpdate();
end
1328
Is it possible to move a bar per drag and drop to another owner/item
with G2antt1 do
begin
	BeginUpdate();
	(IUnknown(Columns.Add('Members')) as EXG2ANTTLib_TLB.Column).Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
	with Chart do
	begin
		FirstVisibleDate := '9/20/2006';
		AllowLinkBars := False;
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		AllowSelectObjects := EXG2ANTTLib_TLB.exNoSelectObjects;
		LevelCount := 2;
		PaneWidth[False] := 96;
		Bars.Item['Task'].OverlaidType := Integer(EXG2ANTTLib_TLB.exOverlaidBarsIncludeCaption) Or Integer(EXG2ANTTLib_TLB.exOverlaidBarsStackAutoArrange) Or Integer(EXG2ANTTLib_TLB.exOverlaidBarsStack);
	end;
	with Items do
	begin
		h := AddItem('Member <b>1</b>');
		AddBar(h,'Task','9/21/2006','9/23/2006','T102','Task <b>102</b>');
		ItemBar[h,'T102',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'T102',EXG2ANTTLib_TLB.exBarCanMoveToAnother] := OleVariant(True);
		h := AddItem('Member <b>2</b>');
		h := AddItem('Member <b>3</b>');
		h := AddItem('Member <b>4</b>');
		AddBar(h,'Task','9/21/2006','9/23/2006','T103','Task <b>103</b>');
		ItemBar[h,'T103',EXG2ANTTLib_TLB.exBarHAlignCaption] := OleVariant(18);
		ItemBar[h,'T103',EXG2ANTTLib_TLB.exBarCanMoveToAnother] := OleVariant(True);
	end;
	EndUpdate();
end
1327
I have the chart displaying days, is it possible to display bars/tasks up to hours so inside days somehow
with G2antt1 do
begin
	BeginUpdate();
	with Chart do
	begin
		LevelCount := 2;
		UnitWidth := 38;
		PaneWidth[False] := 28;
		FirstVisibleDate := '3/4/2011';
		UnitScale := EXG2ANTTLib_TLB.exDay;
		ResizeUnitScale := EXG2ANTTLib_TLB.exHour;
	end;
	Columns.Add('Default');
	with Items do
	begin
		AddBar(AddItem('ASS'),'Task','3/7/2011','3/7/2011 3:30:00 AM',Null,Null);
		AddBar(AddItem('EMB'),'Task','3/7/2011 3:30:00 AM','3/8/2011 9:15:00 AM',Null,Null);
		AddBar(AddItem('TES'),'Task','3/8/2011 9:15:00 AM','3/8/2011 1:45:00 PM',Null,Null);
	end;
	EndUpdate();
end
1326
Is it possible to limit the height of the item while resizing
// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.G2antt1AddItem(ASender: TObject; Item : HITEM);
begin
	with G2antt1 do
	begin
		Items.ItemMinHeight[Item] := 18;
		Items.ItemMaxHeight[Item] := 72;
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	ItemsAllowSizing := EXG2ANTTLib_TLB.exResizeItem;
	ScrollBySingleLine := False;
	BackColorAlternate := RGB(240,240,240);
	Columns.Add('Names');
	with Items do
	begin
		AddItem('Mantel');
		AddItem('Mechanik');
		AddItem('Motor');
		AddItem('Murks');
		AddItem('Märchen');
		AddItem('Möhren');
		AddItem('Mühle');
	end;
	Columns.Item[OleVariant(0)].SortOrder := EXG2ANTTLib_TLB.SortAscending;
	EndUpdate();
end
1325
Is it possible to copy the hierarchy of the control using the GetItems method
with G2antt1 do
begin
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	Columns.Add('Def');
	with Items do
	begin
		h := AddItem('Root');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	PutItems(GetItems(OleVariant(-1)),Null);
end
1324
I have found a property ReadOnly but this doesn't work correctly. I need the chart part of the control to be readonly too. Is it possible
with G2antt1 do
begin
	ReadOnly := EXG2ANTTLib_TLB.exReadOnly;
	with Chart do
	begin
		AllowCreateBar := EXG2ANTTLib_TLB.exNoCreateBar;
		BarsAllowSizing := False;
		AllowLinkBars := False;
	end;
end
1323
How can I select a column
// MouseDown event - Occurs when the user presses a mouse button.
procedure TForm1.G2antt1MouseDown(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
	with G2antt1 do
	begin
		BeginUpdate();
		Columns.Item[OleVariant(G2antt1.ColumnFromPoint[X,Y])].Selected := True;
		Items.SelectAll();
		EndUpdate();
	end
end;

with G2antt1 do
begin
	BeginUpdate();
	MarkSearchColumn := False;
	SingleSel := False;
	FullRowSelect := EXG2ANTTLib_TLB.exRectSel;
	SortOnClick := EXG2ANTTLib_TLB.exNoSort;
	with Columns do
	begin
		Add('Column1');
		Add('Column2');
	end;
	with Items do
	begin
		CellValue[OleVariant(AddItem('One')),OleVariant(1)] := 'One';
		CellValue[OleVariant(AddItem('Two')),OleVariant(1)] := 'Two';
	end;
	EndUpdate();
end
1322
I have several columns, but noticed that the filter is using AND between columns, but I need OR clause for filtering. Is it possible
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Item')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		Filter := 'Child 1';
		FilterType := EXG2ANTTLib_TLB.exFilter;
	end;
	with (IUnknown(Columns.Add('Date')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		DisplayFilterDate := True;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowExclude) Or Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox) Or Integer(EXG2ANTTLib_TLB.exNoItems);
		Filter := '12/28/2010';
		FilterType := EXG2ANTTLib_TLB.exDate;
	end;
	FilterCriteria := '%0 or %1';
	Description[EXG2ANTTLib_TLB.exFilterBarOr] := '<font ;18><fgcolor=FF0000>or</fgcolor></font>';
	Description[EXG2ANTTLib_TLB.exFilterBarAnd] := '<font ;18><fgcolor=FF0000>and</fgcolor></font>';
	with Items do
	begin
		h := AddItem('Root 1');
		CellValue[OleVariant(InsertItem(h,Null,'Child 1')),OleVariant(1)] := '12/27/2010';
		CellValue[OleVariant(InsertItem(h,Null,'Child 2')),OleVariant(1)] := '12/28/2010';
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		CellValue[OleVariant(InsertItem(h,Null,'Child 1')),OleVariant(1)] := '12/29/2010';
		CellValue[OleVariant(InsertItem(h,Null,'Child 2')),OleVariant(1)] := '12/30/2010';
	end;
	ApplyFilter();
	EndUpdate();
end
1321
Is it possible exclude the dates being selected in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	with (IUnknown(Columns.Add('Date')) as EXG2ANTTLib_TLB.Column) do
	begin
		SortType := EXG2ANTTLib_TLB.SortDate;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		DisplayFilterDate := True;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowExclude) Or Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox) Or Integer(EXG2ANTTLib_TLB.exNoItems);
	end;
	with Items do
	begin
		AddItem('12/27/2010');
		AddItem('12/28/2010');
		AddItem('12/29/2010');
		AddItem('12/30/2010');
		AddItem('12/31/2010');
	end;
	EndUpdate();
end
1320
How can I display a calendar control inside the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	with (IUnknown(Columns.Add('Date')) as EXG2ANTTLib_TLB.Column) do
	begin
		SortType := EXG2ANTTLib_TLB.SortDate;
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		DisplayFilterDate := True;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox) Or Integer(EXG2ANTTLib_TLB.exNoItems);
	end;
	with Items do
	begin
		AddItem('12/27/2010');
		AddItem('12/28/2010');
		AddItem('12/29/2010');
		AddItem('12/30/2010');
		AddItem('12/31/2010');
	end;
	EndUpdate();
end
1319
Is it possible to include the dates as checkb-boxes in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	with (IUnknown(Columns.Add('Dates')) as EXG2ANTTLib_TLB.Column) do
	begin
		SortType := EXG2ANTTLib_TLB.SortDate;
		DisplayFilterButton := True;
		DisplayFilterPattern := True;
		DisplayFilterDate := True;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox);
		Filter := 'to 12/27/2010';
		FilterType := EXG2ANTTLib_TLB.exDate;
	end;
	with Items do
	begin
		AddItem('12/27/2010');
		AddItem('12/28/2010');
		AddItem('12/29/2010');
		AddItem('12/30/2010');
		AddItem('12/31/2010');
	end;
	ApplyFilter();
	EndUpdate();
end
1318
How can I filter items for dates before a specified date
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	with (IUnknown(Columns.Add('Dates')) as EXG2ANTTLib_TLB.Column) do
	begin
		SortType := EXG2ANTTLib_TLB.SortDate;
		DisplayFilterButton := True;
		DisplayFilterPattern := True;
		DisplayFilterDate := True;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exNoItems);
		Filter := 'to 12/27/2010';
		FilterType := EXG2ANTTLib_TLB.exDate;
	end;
	with Items do
	begin
		AddItem('12/27/2010');
		AddItem('12/28/2010');
		AddItem('12/29/2010');
		AddItem('12/30/2010');
		AddItem('12/31/2010');
	end;
	ApplyFilter();
	EndUpdate();
end
1317
Is it possible to filter dates
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	with (IUnknown(Columns.Add('Dates')) as EXG2ANTTLib_TLB.Column) do
	begin
		SortType := EXG2ANTTLib_TLB.SortDate;
		DisplayFilterButton := True;
		DisplayFilterPattern := True;
		DisplayFilterDate := True;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exNoItems);
	end;
	with Items do
	begin
		AddItem('12/27/2010');
		AddItem('12/28/2010');
		AddItem('12/29/2010');
		AddItem('12/30/2010');
		AddItem('12/31/2010');
	end;
	EndUpdate();
end
1316
Is it possible to change the Exclude field name to something different, in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	Description[EXG2ANTTLib_TLB.exFilterBarExclude] := 'Leaving out';
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowExclude) Or Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
	end;
	EndUpdate();
end
1315
How can I display the Exclude field in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowExclude) Or Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
	end;
	EndUpdate();
end
1314
Is it possible to show and ensure the focused item from the control, in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowFocusItem) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		SelectItem[InsertItem(h,Null,'Child 2')] := True;
		ExpandItem[h] := True;
	end;
	EndUpdate();
end
1313
Is it possible to show only blanks items with no listed items from the control
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowBlanks) Or Integer(EXG2ANTTLib_TLB.exNoItems);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
1312
How can I include the blanks items in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := Integer(EXG2ANTTLib_TLB.exShowBlanks) Or Integer(EXG2ANTTLib_TLB.exShowCheckBox);
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
1311
How can I select multiple items in the drop down filter window, using check-boxes
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := EXG2ANTTLib_TLB.exShowCheckBox;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
1310
Is it possible to allow a single item being selected in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := False;
		FilterList := EXG2ANTTLib_TLB.exSingleSel;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
1309
How can I display no (All) item in the drop down filter window
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	Description[EXG2ANTTLib_TLB.exFilterBarAll] := '';
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := True;
		FilterList := EXG2ANTTLib_TLB.exNoItems;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
1308
Is it possible to display no items in the drop down filter window, so only the pattern is visible
with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		DisplayFilterPattern := True;
		FilterList := EXG2ANTTLib_TLB.exNoItems;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end
1307
How can I specify the time-scale available when zoom-in/zoom-out or enlarging the chart
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 48;
		ShowNonworkingDates := False;
		LevelCount := 3;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		AllowResizeChart := Integer(EXG2ANTTLib_TLB.exAllowChangeUnitScale) Or Integer(EXG2ANTTLib_TLB.exAllowResizeChartMiddle) Or Integer(EXG2ANTTLib_TLB.exAllowResizeChartHeader);
		Label[EXG2ANTTLib_TLB.exHour] := '';
		Label[EXG2ANTTLib_TLB.exMinute] := '';
		Label[EXG2ANTTLib_TLB.exSecond] := '';
	end;
	with Items do
	begin
		AddBar(AddItem('Task A'),'Task','1/2/2001','1/6/2001','K1',Null);
		AddBar(AddItem('Task B'),'Task','1/6/2001','1/10/2001','K1',Null);
		AddBar(AddItem('Task C'),'Task','1/10/2001','1/14/2001','K1',Null);
		AddBar(AddItem(''),'','1/8/2001','1/8/2001','Info','Click the <b>middle</b> mouse button and start dragging');
	end;
	EndUpdate();
end
1306
How can I enable zoom-in/zoom-out or enlarging the chart, using the mouse middle button
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 48;
		ShowNonworkingDates := False;
		LevelCount := 3;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		AllowResizeChart := Integer(EXG2ANTTLib_TLB.exAllowChangeUnitScale) Or Integer(EXG2ANTTLib_TLB.exAllowResizeChartMiddle) Or Integer(EXG2ANTTLib_TLB.exAllowResizeChartHeader);
	end;
	with Items do
	begin
		AddBar(AddItem('Task A'),'Task','1/2/2001','1/6/2001','K1',Null);
		AddBar(AddItem('Task B'),'Task','1/6/2001','1/10/2001','K1',Null);
		AddBar(AddItem('Task C'),'Task','1/10/2001','1/14/2001','K1',Null);
		AddBar(AddItem(''),'','1/8/2001','1/8/2001','Info','Click the <b>middle</b> mouse button and start dragging');
	end;
	EndUpdate();
end
1305
How can I enable zoom-in/zoom-out or enlarging, using the chart's header

with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 48;
		ShowNonworkingDates := False;
		LevelCount := 3;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		AllowResizeChart := Integer(EXG2ANTTLib_TLB.exAllowChangeUnitScale) Or Integer(EXG2ANTTLib_TLB.exAllowResizeChartHeader);
	end;
	with Items do
	begin
		AddBar(AddItem('Task A'),'Task','1/2/2001','1/6/2001','K1',Null);
		AddBar(AddItem('Task B'),'Task','1/6/2001','1/10/2001','K1',Null);
		AddBar(AddItem('Task C'),'Task','1/10/2001','1/14/2001','K1',Null);
	end;
	EndUpdate();
end
1304
How can I enable resizing the chart, using the mouse middle button
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 48;
		ShowNonworkingDates := False;
		LevelCount := 3;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		AllowResizeChart := Integer(EXG2ANTTLib_TLB.exAllowResizeChartMiddle) Or Integer(EXG2ANTTLib_TLB.exAllowResizeChartHeader);
		MaxUnitWidth := 128;
		MinUnitWidth := 8;
	end;
	with Items do
	begin
		AddBar(AddItem('Task A'),'Task','1/2/2001','1/6/2001','K1',Null);
		AddBar(AddItem('Task B'),'Task','1/6/2001','1/10/2001','K1',Null);
		AddBar(AddItem('Task C'),'Task','1/10/2001','1/14/2001','K1',Null);
		AddBar(AddItem(''),'','1/8/2001','1/8/2001','Info','Click the <b>middle</b> mouse button and start dragging');
	end;
	EndUpdate();
end
1303
How can I enable resizing the chart, using the chart's header
with G2antt1 do
begin
	BeginUpdate();
	Columns.Add('Task');
	with Chart do
	begin
		FirstVisibleDate := '1/1/2001';
		PaneWidth[False] := 48;
		ShowNonworkingDates := False;
		LevelCount := 3;
		UnitScale := EXG2ANTTLib_TLB.exDay;
		AllowResizeChart := EXG2ANTTLib_TLB.exAllowResizeChartHeader;
		MaxUnitWidth := 128;
		MinUnitWidth := 8;
	end;
	with Items do
	begin
		AddBar(AddItem('Task A'),'Task','1/2/2001','1/6/2001','K1',Null);
		AddBar(AddItem('Task B'),'Task','1/6/2001','1/10/2001','K1',Null);
		AddBar(AddItem('Task C'),'Task','1/10/2001','1/14/2001','K1',Null);
	end;
	EndUpdate();
end
1302
Is it possible to auto-numbering the children items but still keeps the position after filtering

with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	with (IUnknown(Columns.Add('Items')) as EXG2ANTTLib_TLB.Column) do
	begin
		DisplayFilterButton := True;
		FilterType := EXG2ANTTLib_TLB.exFilter;
		Filter := 'Child 2';
	end;
	with (IUnknown(Columns.Add('Pos.1')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 ropos ''''';
		Position := 0;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.2')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 ropos '':''';
		Position := 1;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.3')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 ropos '':|A-Z''';
		Position := 2;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.4')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 ropos ''|A-Z|''';
		Position := 3;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.5')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '''<font Tahoma;7>'' + 1 ropos ''-<b>||A-Z''';
		Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
		Position := 4;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.6')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '''<b>''+ 1 ropos ''</b>:<fgcolor=FF0000>|A-Z|''';
		Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
		Position := 5;
		Width := 48;
		AllowSizing := False;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	ApplyFilter();
	EndUpdate();
end
1301
Is it possible to auto-numbering the children items too

with G2antt1 do
begin
	BeginUpdate();
	Chart.PaneWidth[True] := 0;
	LinesAtRoot := EXG2ANTTLib_TLB.exLinesAtRoot;
	Columns.Add('Items');
	with (IUnknown(Columns.Add('Pos.1')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 rpos ''''';
		Position := 0;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.2')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 rpos '':''';
		Position := 1;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.3')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 rpos '':|A-Z''';
		Position := 2;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.4')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '1 rpos ''|A-Z|''';
		Position := 3;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.5')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '''<font Tahoma;7>'' + 1 rpos ''-<b>||A-Z''';
		Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
		Position := 4;
		Width := 32;
		AllowSizing := False;
	end;
	with (IUnknown(Columns.Add('Pos.6')) as EXG2ANTTLib_TLB.Column) do
	begin
		FormatColumn := '''<b>''+ 1 rpos ''</b>:<fgcolor=FF0000>|A-Z|''';
		Def[EXG2ANTTLib_TLB.exCellValueFormat] := OleVariant(1);
		Position := 5;
		Width := 48;
		AllowSizing := False;
	end;
	with Items do
	begin
		h := AddItem('Root 1');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
		ExpandItem[h] := True;
		h := AddItem('Root 2');
		InsertItem(h,Null,'Child 1');
		InsertItem(h,Null,'Child 2');
	end;
	EndUpdate();
end